我有以下 joda 日期解析器:
ISODateTimeFormat.dateTimeParser().withOffsetParsed()
。
我想将其重构为 java.time
api。但是与上面的解析器完全等价的是什么,尤其是关于偏移量?
最佳答案
最好的等效应该是包 java.time.format
中的这个常量,它更喜欢根据文档解析的偏移量(就像 Joda-withOffsetParsed() 时的行为被使用):
DateTimeFormatter.ISO_OFFSET_DATE_TIME
但是,仍然存在小差异。在 Java-8 中,小数点分隔符必须是一个点(逗号是不能容忍的,尽管在 ISO 文件中是有效的,甚至是推荐的)。另外:与 Jodas 毫秒精度相比,Java-8 管理纳秒级精度。也许最重要的区别是:如果输入中缺少偏移量,则 Java-8 会抛出异常,但 Joda 不会(并应用默认时区)。
关于类型的选择:由于您正在使用 DateTime
和固定偏移量,因此最好的等价物应该是 Java-8 中的 OffsetDateTime
。迁移示例:
DateTime dt = ISODateTimeFormat.dateTimeParser().withOffsetParsed().parseDateTime(input);
=>
OffsetDateTime odt = OffsetDateTime.parse(input, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
关于java - java.time 中的 joda.ISODateTimeFormat 是否等效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38348938/