TimeUnit.MILLISECONDS.toSeconds()替代?

时间:2014-09-12 14:15:17

标签: java time

我希望将任意值从毫秒转换为秒,我的第一个选择是TimeUnit.MILLISECONDS.toSeconds。但是它返回一个long,因此将1毫秒转换为0秒而不是0.001秒。

当阅读the documentation时,我可以提取TimeUnit专门用于提取"另一种方式"。即使我不明白为什么他们选择这个策略,我也在寻找可以进行此类转换的(懒惰!)替代方案。

1 个答案:

答案 0 :(得分:3)

好吧,我认为他们已经试图掩盖“最糟糕的情况”。例如,如果您尝试将1天转换为nanos,则该数字将大于最大整数

System.out.println(TimeUnit.DAYS.toNanos(1)); //86400000000000
System.out.println(Integer.MAX_VALUE);        //21474836477

但我同意在极端情况下数字可能会比最大长整数更大。至少javadoc会警告用户。