我尝试使用Duration.ofMillis(Long.MAX_VALUE)在Java 8中创建最大持续时间,但是有一个很长的溢出。 如果存在,我将如何以编程方式获得等效的Duration.MAX_VALUE?
编辑:长溢出可能是由于尝试添加到值而不是在构造期间引起的。抱歉没有可重现的代码。
答案 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();