将xmlGregorianCalendar转换为GregorianCalendar,将日期减去一天。

8 浏览
0 Comments

将xmlGregorianCalendar转换为GregorianCalendar,将日期减去一天。

我试图将xmlGregorianCalendar转换为Date。但是输出日期减少了一天。

以下是我使用的代码 - xmlGregorianCalendar被传递为2019-04-02Z,

但是当执行下面的代码时,返回的日期为- Mon Apr 01 19:00:00 CDT 2019。

private Date formatDate(XMLGregorianCalendar xmlGregorianCalendar) {

if(null != xmlGregorianCalendar ) {

return xmlGregorianCalendar.toGregorianCalendar().getTime();

}

return null;

}

不确定我做错了什么。

0
0 Comments

问题原因:通过将xmlGregorianCalendar转换为GregorianCalendar对象,并将其日期减去一天,但是结果并没有如预期般减去一天。

解决方法:在转换xmlGregorianCalendar对象为GregorianCalendar对象时,需要注意以下几点:

1. 设置合适的时区:在转换过程中,使用`TimeZone.getTimeZone("Coordinated Universal Time")`设置时区为协调世界时(Coordinated Universal Time,缩写为UTC)。这样可以避免时区的偏移导致日期计算错误。

2. 其他参数设置为null:在`toGregorianCalendar()`方法中,将第二个和第三个参数设置为null。这样可以确保使用默认值进行日期的转换。

3. 获取转换后的日期:通过调用`getTime()`方法,可以获取到转换后的日期。

下面是可以尝试的解决方法代码:

return xmlGregorianCalendar
    .toGregorianCalendar(TimeZone.getTimeZone("Coordinated Universal Time"), null, null)
    .getTime();

以上代码可以尝试将xmlGregorianCalendar对象转换为一个日期对象,并将日期减去一天。但是根据提供的信息显示,使用以上代码后仍然得到了相同的结果,即日期为 "Mon Apr 01 19:00:00 CDT 2019"。

0