如何通过编程获取Instant#ofEpochSecond支持的最大秒数?
获取Instant类的MAX_SECOND常量值
我发现Instant#ofEpochSecond(epochSecond)方法对传入的纪元秒数有最小/最大值限制,其源码中定义了以下私有常量:
// Instant.java /** * 支持的最小纪元秒数 */ private static final long MIN_SECOND = -31557014167219200L; /** * 支持的最大纪元秒数 */ private static final long MAX_SECOND = 31556889864403199L; // << 我需要这个值!
我尝试通过编程获取MAX_SECOND的值,使用Range类实现了如下代码:
final var range = ChronoField.INSTANT_SECONDS.range(); log.debug(" 最小值: {}", range.getMinimum()); log.debug(" 最大最小值: {}", range.getLargestMinimum()); log.debug(" 最大值: {}", range.getMaximum()); log.debug(" 最小最大值: {}", range.getSmallestMaximum());
但输出结果不符合预期,得到的内容如下:
03:53:36.120 [ main] DEBUG - 最小值: -9223372036854775808 03:53:36.122 [ main] DEBUG - 最大最小值: -9223372036854775808 03:53:36.122 [ main] DEBUG - 最大值: 9223372036854775807 03:53:36.122 [ main] DEBUG - 最小最大值: 9223372036854775807
内容的提问来源于stack exchange,提问作者Jin Kwon
相关产品推荐
相关产品推荐

