作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有时间戳 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.DateTimeFormatterBuilder
与 java.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/
根据这个问题:Fractional power of units of measures in F# F# 中的度量单位不支持分数幂。 在我的应用程序中,有时考虑带有度量前缀的数据是有益的,例如当处理
我是一名优秀的程序员,十分优秀!