gpt4 book ai didi

java - 解析小于 6 位的纳秒

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:03:13 24 4
gpt4 key购买 nike

我有时间戳 2017-07-25 16:19:59.89384

我想解析它:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
LocalDate time = LocalDateTime.parse(timeStamp, formatter);

但我得到一个 DateTimeParseException 因为纳秒只有 5 位数字。有没有比向右填充 0 更简洁的解决方案?

最佳答案

如果输入总是有 5 位纳秒,您可以使用五个 S 字母而不是六个:

String timeStamp = "2017-07-25 16:19:59.89384";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSS"); // five "S"
LocalDateTime datetime = LocalDateTime.parse(timeStamp, formatter);

另请注意,LocalDateTime.parse 返回一个 LocalDateTime(而不是您代码中的 LocalDate)。


如果您不知道输入中有多少位数字,您可以将 java.time.format.DateTimeFormatterBuilderjava.time.temporal.ChronoField 一起使用code> 并定义最小和最大位数:

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
// date / time
.appendPattern("yyyy-MM-dd HH:mm:ss")
// nanoseconds, with minimum 1 and maximum 9 digits and a decimal point
.appendFraction(ChronoField.NANO_OF_SECOND, 1, 9, true)
// create formatter
.toFormatter();
LocalDateTime datetime = LocalDateTime.parse(timeStamp, formatter);

你只需要根据你的需要调整值1和9。

关于java - 解析小于 6 位的纳秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45314994/

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