【发布时间】:2014-06-28 21:26:45
【问题描述】:
所以 Java 1.8 带有一组全新(和旧)类来管理时间计算:java.time.Instant、java.time.LocalTime、java.time.temporal.ChronoUnit,也许还有更多......
但是为什么没有简单的方法来计算其中任何一个之间的时间差?我希望“time_later - time_earlier”是最常用的时间操纵,但这无处可寻。我不能从另一个中减去一个 LocalTime 并获得一个新的 LocalTime;我不能从另一个 Instant 中减去一个 Instant 以获得新的 Instant。相反,我必须摆弄 ChronoUnits.between、长毫秒和诸如此类的东西来实现这个非常有用的东西。
这是为什么?一定有一些我没有得到的事情发生吗?还是我很傻……?
【问题讨论】:
-
因为 Java 只为原语定义运算符。要点是获得两次之间的差异并不简单。闰年/秒呢?不同的时区?夏令时?本地时间不连续?
-
所以.. 因为它不简单所以不可用。是这样吗?我的想法正好相反……因为它并不简单,所以应该一劳永逸地正确实现。
-
不,它不可用,因为不清楚
time1 - time2应该做什么!见上文。 -
计算两个日期/时间之间的差异实际上是非常复杂的,当你包括闰年、千年和世纪边界之类的东西时,这就是我们有 Duration 类的原因。更多详情请查看Date and Time。
-
飞行时的持续时间通常基于从飞行者的角度可观察到的时间量。这并不意味着 10 小时的飞行会让你向后或向前 10 小时
标签: java time java-8 java-time