我不想在代码中写入24 * 60 * 60 * 1000
,而是使用可读性更强的静态DAY
变量。
我知道我自己可以通过编写来定义变量
private static final long DAY = 24*60*60*1000;
然而,在我看来,这是一个基本功能。它在标准图书馆的某个地方吗?
您可以在Java 8 java.time.Duration.ofDays(1).getSeconds()
中尝试java.time
包的Duration API。
只需将其存储在公共静态字段中:public static final long SECONDS_IN_DAY = Duration.ofDays(1).getSeconds()
您感兴趣的方法是ofDays(long)
方法:
获得持续时间表示标准的24小时天数。秒是根据一天的标准定义计算,其中每天是86400秒,这意味着一天24小时。纳秒字段设置为零。
参数:天-天数,正数或负数
退货:a持续时间,不为空
Throws:ArithmeticException-如果输入天数超过持续时间的容量
接下来,在相同的Duration API:上调用getSeconds()
方法
获取此持续时间内的秒数。持续时间使用两个字段存储——秒和纳秒。这个纳秒部分是一个从0到999999999的值,它是以秒为单位调整长度。总工期定义为调用此方法和getNano()。
持续时间表示时间线。负持续时间用的负号表示第二部分。-1纳秒的持续时间存储为-1秒加上999999999纳秒。
返回:持续时间长度的整秒部分,正或负
Java 8中的一种可能性是java.time.Duration.ofDays(1).toMillis()
。
最简单的解决方案是创建问题代码示例中所示的变量。没有必要进口任何东西。
IMO,您根本不需要这样的常量。JDK1.5之后提供的TimeUnit
对于在时间单位之间转换持续时间非常有用,例如:
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
,所以如果实际结果不是整数,它就会被截断。