【问题标题】:XmlSchemaType "date" - without time zone?XmlSchemaType“日期” - 没有时区?
【发布时间】:2014-10-03 11:26:04
【问题描述】:

我正在使用这样的 java xml 注释:

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

我该怎么做?

【问题讨论】:

    标签: java xml date xsd timezone


    【解决方案1】:

    嗯,阅读文档有时会告诉你一些很棒的事情,这就是如何做到这一点,时区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;
    }
    

    希望这会有所帮助。

    【讨论】:

    • “阅读文档有时会告诉你很棒的事情”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 2011-04-16
    • 2016-11-18
    • 2013-07-06
    • 2014-07-05
    • 2017-02-19
    相关资源
    最近更新 更多