【发布时间】:2018-06-10 17:49:06
【问题描述】:
下面的代码 (Java 8) sn-p 当秒值在使用 LocalDateTime.parse 解析的日期,例如 2018-07-10 00:00:00:
final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
final LocalDateTime localDateTime = LocalDateTime.parse("2018-07-06 00:00:00", dateTimeFormatter);
final String lexicalDate = localDateTime.toString();
System.out.println("Lexical Date : "+ lexicalDate);
final XMLGregorianCalendar gregorianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(lexicalDate);
System.out.println("Gregorian Calendar : "+ gregorianCalendar);
词汇日期打印为:
词汇日期:2018-07-10T00:00
而不是:
词汇日期:2018-07-10T00:00:00
现在这会影响公历的日期值,当第二个被删除时返回 null。秒值大于零的其他情况下,效果很好。
javax.xml.datatype.DatatypeFactory.newInstance().newXMLGregorianCalendar(lexicalDate)
由于解析字符串中的 00 秒值,只要秒值被丢弃,上述代码就会返回 null。
有人可以帮助使用 LocalDate 时间处理此问题的更好方法,否则它可能是 Java 8 LocalDateTime 中的一个错误/有趣的控件。
请注意,我无法控制此日期值,它来自第三方平台。
【问题讨论】:
-
为什么你想要
XMLGregorianCalendar?问是因为如果要在 XML 中使用 XML 字符串,在我看来,您似乎只是使用该类来获取您输入的相同字符串,您可以考虑跳过这个步骤。 -
好吧,我有一个类用于使用
绑定 WSDL dateTime/date。默认情况下,JAXB 为 WSDL 中的任何 dateTime 或 date 类型字段生成 javax.xml.datatype.XMLGregorianCalendar。我的 WSDL 生成的类的日期字段为 XMLGregorianCalendar。我求助于使用 jaxb 全局绑定,因为我使用的 WSDL 在 dateTime 值方面不一致,因为有时它会返回没有时间组件的日期,因此最终会从客户端接收空日期值。