Java:为什么TimeUnit缺少枚举?

时间:2012-06-07 16:45:57

标签: java java-ee time

我只是想知道为什么Java的TimeUnit类中缺少一些枚举?

实际上最大时间单位是DAY,而我想使用像WEEK,YEAR这样的东西......

2 个答案:

答案 0 :(得分:15)

TimeUnit.DAYS常量表示24小时的间隔,而不是日历日(午夜到午夜)。超过一天(一周,一个月,一年)的任何事物都是日历单位,而不是时间单位。日历单位的持续时间取决于使用的日历:例如,当夏令时进入和退出生效,闰年延长一天,等等,一周可以更长或更短一周。这就是为什么将日历单元包含在TimeUnit枚举中是没有意义的。

答案 1 :(得分:-1)

在引入Java 8 ChronoUnit的过程中,您拥有一个枚举,介于NANOS(纳秒)与CENTURIES,MILLENIA甚至FOREVER之间的所有常用时间单位:https://docs.oracle.com/javase/8/docs/api/java/time/temporal/ChronoUnit.html (另请参阅朱利安·克朗格对所选答案的评论)