我不想在我的代码中编写24 * 60 * 60 * 1000
,而是使用更易读的静态DAY
变量。
我知道我可以自己通过编写
来定义变量private static final long DAY = 24*60*60*1000;
然而,在我看来,这似乎是一个基本功能。它是否在标准库的某处覆盖?
答案 0 :(得分:3)
您可以在Java 8 java.time
中尝试java.time.Duration.ofDays(1).getSeconds()
包的Duration API。
将其存储在公共静态字段中:
public static final long SECONDS_IN_DAY = Duration.ofDays(1).getSeconds()
您感兴趣的方法是ofDays(long)
method:
获得持续时间 代表一些标准的24小时工作日。秒是 根据每天的标准定义计算,每天 是86400秒,这意味着每天24小时。纳秒秒 字段设置为零。
参数:天数 - 天数,正数或负数
返回:a 持续时间,不为空 抛出:ArithmeticException - 如果输入天数 超过持续时间的容量
通过调用同一持续时间API上的getSeconds()
method来跟进:
获取此持续时间内的秒数。的长度 持续时间使用两个字段存储 - 秒和纳秒。该 纳秒部分是0到999,999,999之间的值 以秒为单位调整长度。总持续时间定义为 调用此方法和getNano()。
持续时间表示两个点之间的定向距离 时间线。负的持续时间由负号表示 秒部分。 -1纳秒的持续时间存储为-1秒 加上999,999,999纳秒。
返回:持续时间长度的整数秒部分, 积极的还是消极的
答案 1 :(得分:0)
Java 8中的一种可能性是java.time.Duration.ofDays(1).toMillis()
。
答案 2 :(得分:0)
最简单的解决方案是创建变量,如您的问题代码示例所示。没有必要进口任何东西。
答案 3 :(得分:0)
IMO,你根本不需要这样的常数。 TimeUnit
可用,因为JDK 1.5对于在时间单位之间转换持续时间非常有用,例如:
long millis = TimeUnit.DAYS.toMillis(days);
long seconds = TimeUnit.HOURS.toSeconds(hours);
// or, if you still need a constant
static final long DAY = TimeUnit.DAYS.toMillis(1);
唯一的缺点是始终返回long
,因此如果实际结果不是整数,则会被截断。