Java持续时间的最大值是多少

时间:2016-07-06 15:34:38

标签: java java-8 max java-7 duration

我尝试使用Duration.ofMillis(Long.MAX_VALUE)在Java 8中创建最大持续时间,但是有一个很长的溢出。 如果存在,我将如何以编程方式获得等效的Duration.MAX_VALUE?

编辑:长溢出可能是由于尝试添加到值而不是在构造期间引起的。抱歉没有可重现的代码。

3 个答案:

答案 0 :(得分:5)

根据Javadoc

  

持续时间使用纳秒分辨率,最大值可以保持为长。

     

持续时间的范围需要存储大于长的数字。为了实现这一点,该类存储一个代表秒的长整数和一个代表纳秒秒的int,它总是在0到999,999,999之间。该模型具有定向持续时间,意味着持续时间可能是负的。

答案 1 :(得分:4)

看起来Duration存储在几秒钟内(最多Long.MAX_VALUE)和纳秒(最多999,999,999)。然后最大的持续时间是:

Duration d = Duration.ofSeconds(Long.MAX_VALUE, 999_999_999);

当我打印它(System.out.print(d))时,我得到以下内容:

PT2562047788015215H30M7.999999999S

表示:2562047788015215小时,30分钟和7.999999999秒。

答案 2 :(得分:4)

简单:

Duration maxDur = ChronoUnit.FOREVER.getDuration();