【问题标题】:xmlGregorianCalendar convert to GregorianCalendar reducing the date by a dayxmlGregorianCalendar 转换为 GregorianCalendar 将日期减少一天
【发布时间】:2019-08-24 06:21:53
【问题描述】:

我正在尝试将 xmlGregorianCalendar 转换为日期。但是输出将日期减少了一天。 以下是我使用的代码 - 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;
}

不知道我做错了什么。

【问题讨论】:

  • 该值被时区倾斜。您需要考虑时区。
  • 04/02/2019 不是有效的 XML 日期字符串。您的意思是 XML 值是 2019-04-02
  • @Andreas 更新了问题 - 日期传递为 2019-04-02Z,但转换为 - Mon Apr 01 19:00:00 CDT 2019
  • 我建议您开始使用 java.time.LocalDate 来获取仅限日期的值,而不是过时的 java.util.Date 类。请参阅Convert between LocalDate and XMLGregorianCalendar 了解如何正确转换。
  • @Andreas - 使用 localDate 来获得想要的结果。谢谢

标签: java xml datetime xmlgregoriancalendar


【解决方案1】:

尝试使用这个:

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

【讨论】:

  • 不 - 它仍然与返回相同 - Mon Apr 01 19:00:00 CDT 2019
猜你喜欢
  • 1970-01-01
  • 2011-12-31
  • 2023-03-30
  • 2019-08-20
  • 1970-01-01
  • 2017-01-08
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
相关资源
最近更新 更多