java中的XMLGregorianCalendar,没有时区

Posted

技术标签:

【中文标题】java中的XMLGregorianCalendar,没有时区【英文标题】:XMLGregorianCalendar in java, with NO Timezone 【发布时间】:2018-05-13 20:03:48 【问题描述】:

如何创建没有时区的 XMLGregorianCalendar?没有时间偏移 (0) == UTC,它在输出中输出“Z”。我的字段的含义是隐含的本地时间,在xml记录的其他地方指定了位置(例如地址)。

如何创建具有未定义时区(时区不确定)的 XMLGregorianCalendar?

有效的 XML ISO-8601 公历格式包括:

CCYY-MM-DDThh:mm:ss – 没有 Zulu 时间指示符或 TimeOffset 是指相对物理位置的本地时间。 CCYY-MM-DDThh:mm:ssZ – 相对物理位置的 DateTime 以 UTC (Zulu) 时间表示,对于本地时间,必须进行转换。 CCYY-MM-DDThh:mm:ss+05:30 相对物理位置的 DateTime 以某个时区表示,该时区与 UTC 相差 +5 小时 30 分钟。对于本地时间,我们必须首先转换为 UTC,然后通过偏移 UTC 转换为本地时间。不保证提供的位置是记录位置的当地时间。

【问题讨论】:

【参考方案1】:

我看了the documentation of XMLGregorianCalendar。在顶部的表格中,底部一行,它说时区是

分钟数或DatatypeConstants.FIELD_UNDEFINED

所以让我们试试后一种选择:

    System.out.println(xcal);
    xcal.setTimezone(DatatypeConstants.FIELD_UNDEFINED);
    System.out.println(xcal);

在一次测试运行中打印出:

2017-11-30T07:54:05.647+01:00
2017-11-30T07:54:05.647

我将时区设置为未定义后,它不再打印偏移量。所以我相信我已经得到了你想要的。

【讨论】:

谢谢 - 我应该在昨晚关闭这个问题,我在发布问题大约 5 分钟后自己发现了这个问题。完成工作获得的积分。

以上是关于java中的XMLGregorianCalendar,没有时区的主要内容,如果未能解决你的问题,请参考以下文章

关于JAVA 中的DOM操作

mySQL在java中的应用

Java中的ArrayList 重要方法补充

Java中的Math函数

使用java 8中的forEach(..)而不是java 5中的forEach循环的任何优势[重复]

Java中的数据类型