System.currentTimeMillis的长度

时间:2012-02-05 12:27:48

标签: java time timer epoch milliseconds

System.currentTimeMillis是否始终返回固定长度的值。在我的Windows Core2中,它返回一个13位长的值。

从其API:

  

以毫秒为单位返回当前时间。请注意,虽然返回值的时间单位是毫秒,但值的粒度取决于底层操作系统,并且可能更大。例如,许多操作系统以几十毫秒为单位测量时间。

2 个答案:

答案 0 :(得分:41)

System.currentTimeMillis()返回自纪元以来的毫秒数,即自1970年1月1日午夜UTC以来。

您可以检查自纪元以来的毫秒数是第一次是13位十进制数字。这发生在

  

2001年9月9日01:46:40.000 UTC(自纪元以来1'000'000'000'000 ms)

您还可以检查自纪元以来的毫秒数何时将是最后一次13位十进制数字。这将发生在

  

2286年11月20日17:46:39.999 UTC(自纪元以来9'999'999'999'999 ms)

因此,在这两个日期之间,假设机器正确设置了当前时间,函数将始终返回13位十进制数值。

因此,假设返回值超过接下来的两个世纪的13位十进制数字,那么您就是安全的。

答案 1 :(得分:2)

它返回一个63位二进制数(它实际上是一个64位有符号数,它总是正数,因此最高位从不设置)。许多前导数字将为零。将其转换为十进制时,通常会丢弃任何前导零。因此,小数位数会有所不同。