java - java.time 中的 joda.ISODateTimeFormat 是否等效?

标签 java jodatime java-time

我有以下 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/

相关文章:

Java Time API - 获取总运行时间的更好方法

java - SimpleDateFormat 与带有时区的 ZonedDateTime

java - 如何在 AppEngine (Java) 上保存简单的数字数组?

java - 使用 spark 将 POST 正文解析为 java 对象

java - JodaTime IllegalArgumentException 格式无效 "yyyy-MM-dd hh:mm:ss"

java - TZupdater 因 tzdata2016g 版本而失败

java - 线程 "main"java.lang.VerifyError : class org. bouncycaSTLe.asn1.ASN1Primitive 中的异常覆盖 final方法 equals.(Ljava/lang/Object;)Z

java - 如何设置 ImageButton 大小以及按下按钮时将其显示在添加的图像上

scala - 如何在 Scala 中将 DateTimeComparator 转换为 Ordering[DateTime]

java - 在 Joda Time 的帮助下使用夏令时的正确方法