2014-10-03 66 views
4

我使用的Java XML注释是这样的:XmlSchemaType“日期” - 没有时区?

@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; 
} 

希望这有助于。