System.currentTimeMillis
是否始终返回固定长度的值。在我的Windows Core2中,它返回一个13位长的值。
从其API:
以毫秒为单位返回当前时间。请注意,虽然返回值的时间单位是毫秒,但值的粒度取决于底层操作系统,并且可能更大。例如,许多操作系统以几十毫秒为单位测量时间。
答案 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位有符号数,它总是正数,因此最高位从不设置)。许多前导数字将为零。将其转换为十进制时,通常会丢弃任何前导零。因此,小数位数会有所不同。