【问题标题】:How to correctly convert xs:time to java date如何正确地将 xs:time 转换为 java 日期
【发布时间】:2016-06-28 16:25:41
【问题描述】:

我有一个 xml 文件,其中有一个表示时间戳的字段。时间字段是可选的,因此没有组合的日期时间字段。使用 JAXB,我们将此字段映射到我们的 java 模型中的 XMLGregorianCalendar。

现在我的问题是如何在 xml 中也给出的日期将这个时间转换为正确的本地时间(比如欧洲/柏林夏令时)?

xml文件中的时间如下:

<timeField>14:20:00.0+02:00</timeField>

偏移量要么未指定(假定为本地时间),要么被指定为 UTC 的偏移量。

如果我尝试

xmlGregorianCalendarDate.toGregorianCalendar().getTime();

那么假定的时区是sun.util.calendar.ZoneInfo[id="GMT+02:00",offset=7200000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],不考虑夏令时。

相反,如果我使用xmlGregorianCalendarDate.toGregorianCalendar(timeZone).getTime();,那么它会完全丢弃来自 xml 的偏移量以支持指定的时区。

【问题讨论】:

  • 你有日期字段吗?

标签: java xml datetime


【解决方案1】:

如果您没有在 XML 中指定时区,则无法猜测它是否是 DST(例如 GMT+2:00 在柏林是 DST,但 GMT+2:00 不是 基辅 DST,所以程序应该选择哪个时区?)。

因此,如果您想要 DST,您需要提供时区,可以是 XML 格式,也可以像上面那样:xmlGregorianCalendarDate.toGregorianCalendar(timeZone).getTime()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 2017-10-02
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    相关资源
    最近更新 更多