System.currentTimeMillis的长度

anz*_*aan 18 java time timer epoch milliseconds

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

从其API:

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

Ada*_*man 42

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

您可以检查自纪元以来的毫秒数是第一次是13位十进制数.发生了这件事

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

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

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

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

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

  • 我想知道有多少开发人员编写了代码来处理超过14个数字的时代. (7认同)

Tom*_*son 2

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

  • 从 `System.currentTimeMillis()` 返回的数字始终为正数,因为在 1970 年(或者实际上是 1996 年)之前不可能调用它。除非你有时间机器,或者对你的系统时钟做了一些愚蠢的事情。但是,是的,更一般地说,你说得对,时间可能是负面的。 (2认同)