【发布时间】:2021-04-11 21:39:42
【问题描述】:
我正在尝试从 offsetDate Time 序列化到 ISOString 时将毫秒数格式化为 3 位数
| Value | Expected | Actual |
|---|---|---|
| 2020-06-16T05:47:40.1-06:00 | 2020-06-16T11:47:40.001Z | 2020-06-16T11:47:40.100Z |
| 2020-06-16T05:47:40.12-06:00 | 020-06-16T11:47:40.012Z | 020-06-16T11:47:40.120Z |
我用的时候
private static final DateTimeFormatter outFormatter = new DateTimeFormatterBuilder()
.parseLenient()
.append(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"))
.appendLiteral('.')
.appendValue(ChronoField.MILLI_OF_SECOND,3)
.appendZoneId()
.toFormatter()
.withZone(ZoneId.from(ZoneOffset.UTC));
文档说填充将在左侧。但我得到了正确的填充。
关于如何使用日期格式化程序实现的任何建议?
【问题讨论】:
-
为什么你期望 0.1 秒(100 毫秒)被表示为 0.001 秒(1 毫秒)?
-
2020-06-16T05:47:40.1-06:00。有 40 秒后分数为 1。我们的一些代码使用 @JsonFormat("yyyy-MM-dd'T'HH:mm:ss:SSSXXX") 转换为 001ms 的杰克逊注解。我正在尝试统一多种格式以使用毫秒输出。那么哪一个是对的?我应该将其视为 40.1 秒而不是 40 秒 1 毫秒吗?
-
来自stackoverflow.com/questions/30087963/… 。我理解它的分数,我应该改变我的期望。非常感谢。尽管 @jsonFormat 与 simpleDate 模式 SSS 认为 Java8 时间包 SSS 中的毫秒数是分数
标签: date java-8 dateformatter