首页 > 解决方案 > 将日期从 java.util.Date 转换为 javax.xml.datatype.XMLGregorianCalendar 时更改

问题描述

日期 2018 年 9 月 27 日星期四 00:00:00 CEST

变成

2018-09-26T22:00:00.000Z

在 XMLGregorianCalendar 中转换时

通过这种方法:

 public static XMLGregorianCalendar dateToXMLGregorianCalendar(Date date) throws DatatypeConfigurationException{
    GregorianCalendar cal = new GregorianCalendar();
    cal.setTime(date);
    return DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
}

如何避免此日期更改?

肿瘤坏死因子

标签: javajava.util.datexmlgregoriancalendar

解决方案


那是相同的日期和时间。

您的第一个日期在 CEST 时区,相当于 UTC+2 您的第二个时间戳在 Z 时区呈现,相当于 UTC+0

因此,两者都意味着相同的时间点,但呈现方式不同。

GregorianCalendar 有一种更改日历时区的方法,如果您想在 CEST 日期和时间中输出,那么我建议您将日历时区更改为此。有关 API 参考,请参阅GregorianCalendar.setTimeZone

这也取决于您如何从该日历中检索日期。如果您只是打算使用.getTime()返回普通 Java Date 对象的方法,那么您可以通过DateTimeFormatter发送它以在您想要的任何时区输出日期。

如果您只关心日期的实际“日期”部分,并且不想使其适应各种时区,请查看LocalDate


推荐阅读