gpt4 book ai didi

java - JSR-310 - 解析可变长度的秒分数

转载 作者:IT老高 更新时间:2023-10-28 21:18:27 26 4
gpt4 key购买 nike

有没有一种方法可以创建 JSR-310 格式化程序,它能够解析以下日期/时间以及可变长度的秒数?

2015-05-07 13:20:22.276052

2015-05-07 13:20:22.276

示例代码:

DateTimeFormatter formatter
= new java.time.format.DateTimeFormatterBuilder()
.append( java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") )
.appendOptional( java.time.format.DateTimeFormatter.ofPattern(".SSSSSS") )
.toFormatter();
formatter.parse("2015-05-07 13:20:22.276052", LocalDateTime::from);

最佳答案

这样就解决了问题:

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("yyyy-MM-dd HH:mm:ss")
.appendFraction(ChronoField.MICRO_OF_SECOND, 0, 6, true)
.toFormatter();

System.out.println(LocalDateTime.parse("2015-05-07 13:20:22.276052", formatter));
System.out.println(LocalDateTime.parse("2015-05-07 13:20:22.276", formatter));
System.out.println(LocalDateTime.parse("2015-05-07 13:20:22", formatter));

// output
2015-05-07T13:20:22.276052
2015-05-07T13:20:22.276
2015-05-07T13:20:22

answer by JiriS不正确,因为它使用 appendValue 而正确的方法是使用 DateTimeFormatterBuilder.appendFraction (它也处理小数点)。可以在第二个系统中看到差异,其中 appendValue错误地解析“2015-05-07T13:20:22.000276”。

解析时,LocalDateTime.parse(str, formatter)在大多数情况下,它比直接使用格式化程序更简洁。

使用 builder 时,利用 appendPattern()optionalStart()保持整洁。

关于java - JSR-310 - 解析可变长度的秒分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30103167/

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