【问题标题】:Is there a class in java.time comparable to the Joda-Time Interval?java.time 中是否有与 Joda-Time Interval 相当的类?
【发布时间】:2014-04-04 17:38:10
【问题描述】:

我正在评估将我的项目从使用 Joda-Time 迁移到 Java 8 中的 java.time package。在 Joda-Time 中,我大量使用了 Interval 类。我在 java.time 中找不到类似的东西。

有类似的类吗?

【问题讨论】:

    标签: java-8 jodatime java-time


    【解决方案1】:

    JDK 8 JSR-310 没有Interval 类。对区间的概念进行了分解,以确保可以完成库的其余部分。

    ThreeTen-Extra 项目托管其他非 JDK 日期时间类,v0.9 包括 Interval

    注意:答案于 2014 年 12 月 10 日更新,在 ThreeTen-Extra 中包含 Interval

    【讨论】:

    • 如您所说“可以完成”,是出于时间考虑,还是出于其他考虑?我认为Interval 的引入可能会令人困惑、模棱两可和危险。很危险,因为 Interval 仍在确切日期的范围内(它有结束日期和开始日期),这很容易被错过?我认为Interval 的省略使它成为一个更干净的实现? PeriodDuration 对我来说是没有戏剧性的替代品。
    • “已完成”,如在 Java 8 发布日期之前完成。 Java 9 中也不会添加间隔。 JDK 确实需要一个适当的范围概念。
    【解决方案2】:

    使用 Guava 中的 Range 类。

    更多详情请见https://stackoverflow.com/a/23485533/1214902

    【讨论】:

      【解决方案3】:

      类 java.time.Duration 可能会为您提供类似的功能。总的来说java 8的时间包非常全面灵活

      【讨论】:

      • Duration 没有开始/结束时间。 Interval 会。
      【解决方案4】:

      对不起,JSR-310 中没有与 JodaTime-Interval-class 等效的东西。我怀疑这是否会发生,但项目负责人 Stephen Colebourne 考虑至少在他的外部库 Threeten-Extra 的范围内支持它,请参阅issue

      如果您对 JodaTime 感到满意,您应该保留它。并非 JodaTime 中的所有内容都移植到 Java 8(间隔不是唯一的问题)。

      2014 年 12 月 13 日更新:

      Java-8 中的情况并没有改变,但您也可以考虑 Joda-Time 之外的其他外部库。自 v0.9 以来现在包含一个非常简单的间隔类的 Threeten-Extra(请参阅此处 S. Colebourne 的另一个答案)或我的库 Time4J,它自 v2.0 以来提供the range package

      【讨论】:

      • joda.time 和 java8.time 之间的其他区别是什么?某处有比较文章吗?
      • @AlexanderMyltsev 有很多!一旦我在我的博客上用德语进行了(非常简短和过时的)比较。如果我有时间,我应该写一个新的;-)。 JSR-310 的技术基础肯定更现代(例如使用枚举),内部实现细节更健康,从而带来更好的性能特征。另一方面,JSR-310 过去和将来都不会成为一个完整的时间库(嗯,Joda-Time 到目前为止还不完整,但提供了更多功能,如间隔、周期格式化程序等)。一个例外是本地化的工作日数字,在 JSR-310 中更好。
      • 我只是偶然发现了这个问题,我很好奇:Duration 类有什么问题?
      • @wullxz 课程Duration(以及Period)没有锚定在给定的时间线上,这意味着没有定义的开始时间,只有一个长度。相比之下,间隔总是有开始时间和结束时间。
      • @john16384 如果你看看我上面提到的区间实现,你会发现还有很多东西需要探索。例如特殊的间隔比较关系或专门的格式化功能或无限边界或开放/封闭边界或其他类型,如日期范围。考虑到所有这些方面,Joda 解决方案非常小,同样适用于 Threeten-Extra(在特征数量方面相当弱)。 Guava 范围集和 Time4J 在这里要好得多。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-10
      • 2015-06-27
      • 1970-01-01
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多