gpt4 book ai didi

Java 8 LocalDateTime 在解析带有 00 秒的日期字符串值(如 "2018-07-06 00:00:00")时删除 00 秒值

转载 作者:行者123 更新时间:2023-12-01 17:17:22 25 4
gpt4 key购买 nike

当解析的日期内的秒值为时,下面的代码 (Java 8) 片段会删除我的日期时间秒部分使用 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);

词汇日期打印为:

Lexical Date : 2018-07-10T00:00

而不是:

Lexical Date : 2018-07-10T00:00:00

现在,这会影响公历的日期值,当第二个被删除时,它返回 null。其他情况下,当秒值大于零时,它可以正常工作。

javax.xml.datatype.DatatypeFactory.newInstance().newXMLGregorianCalendar(lexicalDate)

只要秒值由于解析字符串中的 00 秒值而被删除,上面的代码就会返回 null。

有人可以协助提供一种更好的方法来使用 LocalDate 时间处理此问题,否则它可能是 Java 8 LocalDateTime 中的错误/有趣的控件。

请注意,我无法控制此日期值,它来自第三方平台。

最佳答案

功能,而不是错误

您正在查看LocalDateTime::toString 使用的特定DateTimeFormatter 的记录行为。方法。

摘录,我的重点:

The output will be one of the following ISO-8601 formats:

uuuu-MM-dd'T'HH:mm

uuuu-MM-dd'T'HH:mm:ss

uuuu-MM-dd'T'HH:mm:ss.SSS

uuuu-MM-dd'T'HH:mm:ss.SSSSSS

uuuu-MM-dd'T'HH:mm:ss.SSSSSSSSS

The format used will be the shortest that outputs the full value of the time where the omitted parts are implied to be zero.

如果您希望在生成字符串时有其他行为来表示您的值 LocalDateTime ,使用不同的DateTimeFormatter并将其传递给LocalDateTime::format .

String output = myLocalDateTime.format( someOtherFormatter ) ;

LocalDateTime 没有“格式”,因为它不是文本。 DateTimeFormatter 的工作是解析或生成 String特定格式的对象。

关于Java 8 LocalDateTime 在解析带有 00 秒的日期字符串值(如 "2018-07-06 00:00:00")时删除 00 秒值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61356475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com