2014-10-03 7 views
4

Я использую Java XML аннотации, как это:XmlSchemaType "date" - без часового пояса?

@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "OrganisationUnit", propOrder = { 
     "companyId", 
     "validFrom", 
     "validTo", 
}) 
public class OrganisationUnit { 

    @XmlElement(name = "company_id", required = true) 
    protected String companyId; 

    @XmlElement(name = "valid_from") 
    @XmlSchemaType(name = "date") 
    protected XMLGregorianCalendar validFrom; 

    @XmlElement(name = "valid_to") 
    @XmlSchemaType(name = "date") 
    protected XMLGregorianCalendar validTo; 

    ... 
} 

Однако, когда я сделать информацию доступной через службу REST, то date элементы отображаются с часовыми поясами:

<organisationUnits> 
    <organisationUnit> 
     <company_id>ABC</company_id> 
     <valid_from>1970-01-01+01:00</valid_from> 
     <valid_to>2099-12-31+01:00</valid_to> 
    </organisationUnit> 
</organisationUnits> 

Я не полностью понять, требуется ли XmlSchemaType date для отображения часового пояса или нет, но в идеале я хотел бы показать даты без часовых поясов.

  <valid_from>1970-01-01</valid_from> 
     <valid_to>2099-12-31</valid_to> 

Как это сделать?

ответ

2

Ну, чтение документации иногда говорит вам удивительные вещи, и вот как именно это сделать, с часовым поясом DatatypeConstants.FIELD_UNDEFINED:

private XMLGregorianCalendar dateWithoutTimezone(Date date) throws DatatypeConfigurationException { 
    calendar.setTime(date); 
    XMLGregorianCalendar xmlGregorianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(calendar); 
    xmlGregorianCalendar.setTimezone(DatatypeConstants.FIELD_UNDEFINED); 
    return xmlGregorianCalendar; 
} 

Надеется, что это помогает.

Смежные вопросы