Java中是否存在一个全局变量?

时间:2016-05-09 10:06:14

标签: java time

我不想在我的代码中编写24 * 60 * 60 * 1000,而是使用更易读的静态DAY变量。

我知道我可以自己通过编写

来定义变量
private static final long DAY =  24*60*60*1000;

然而,在我看来,这似乎是一个基本功能。它是否在标准库的某处覆盖?

4 个答案:

答案 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,因此如果实际结果不是整数,则会被截断。