Java中是否有一个全局变量来表示一天的长度



我不想在代码中写入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,所以如果实际结果不是整数,它就会被截断。

最新更新