首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从XMLGregorianCalendar获取日期

从XMLGregorianCalendar获取日期
EN

Stack Overflow用户
提问于 2018-07-06 14:57:11
回答 1查看 619关注 0票数 0

我一直在工作的任务中,我需要从XMLGregorianCalendar获取日期。我已将其转换为GregorianCalendar,并尝试从it.But中获取日期。我看到存储在XMLGregorianCalendar中的原始日期和从toGregorianCalendar中获取的日期之间的差异,我希望日期采用UTC格式,并且源时区也在UTC.Please中查找代码片段以供参考。

代码语言:javascript
复制
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ";
sdf.setTimeZone(TimeZone.getTimeZone("UTC"))
String date = sdf.format(xmlGregorianCalendar.toGregorianCalendar().getTime());

我想知道是否有任何方法可以从具有协调世界时时区的XMLGregorianCalendar获取日期,而不使用任何时间difference.Below是存储在XMLGregorianCalendar中的示例源日期

代码语言:javascript
复制
2018-07-06T05:11:00.050Z

我期待着与字符串完全相同的日期,在我用SimpleDateFormat.Your帮助格式化它之后,非常感谢,提前谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-07-06 18:08:38

代码语言:javascript
复制
    OffsetDateTime dateTime = xmlGregorianCalendar.toGregorianCalendar()
            .toZonedDateTime()
            .toOffsetDateTime();
    System.out.println("Date-time with explicit offset: " + dateTime);
    System.out.println("Offset is " + dateTime.getOffset());

对于您的XMLGregorianCalendar,打印如下:

代码语言:javascript
复制
Date-time with explicit offset: 2018-07-06T05:11:00.050Z
Offset is Z

Z表示协调世界时或零偏移或祖鲁时区。因此,这将为您提供具有显式偏移量的UTC格式的日期和时间。

如果您真正需要的是正确的时间点,则通常会使用Instant

代码语言:javascript
复制
    Instant pointInTime = xmlGregorianCalendar.toGregorianCalendar()
            .toZonedDateTime()
            .toInstant();
    System.out.println("As point in time: " + pointInTime);

输出:

代码语言:javascript
复制
As point in time: 2018-07-06T05:11:00.050Z

您会注意到,日期和时间与以前完全一样打印,包括协调世界时的Z。不同之处在于:OffsetDateTime可以容纳任何偏移量(如果XMLGregorianCalendar持有不同的偏移量,它将持有不同的偏移量)。Instant被认为是独立于任何区域或偏移的时间点。只有它的toString方法使用UTC来打印日期和时间,并且UTC的后缀始终是Z

你的代码出了什么问题?

首先,SimpleDateFormat类不仅已经过时很久了。它也是出了名的麻烦,特别是当涉及到解析时,但仍然如此。TimeZone也过时了。您将更喜欢使用java.time,即现代Java date and time API,就像我在上面的代码片段中所做的那样。

我运行了你的代码并得到了2018-07-06T05:11:00.050+0000。从UTC到零的偏移量以不同的方式打印,但字符串与您所说的内容一致。

不能有带有时区或偏移量的java.util.Date (另一个过时的类)。它代表一个时间点,仅此而已。

链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51204642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档