System.currentTimeMillis()是否曾重置?

时间:2016-01-19 11:48:09

标签: java android system milliseconds

我一直在担心如果时间重置我的应用可能会中断,但经过进一步测试后,我对此不再那么担心。

大约6:40 A.M.,我将值打印给自己(我从手机上读取):1453203669474。我为自己计算的价值是24000000。这让我觉得时间是累积的,但这并没有多大意义。我看到的所有问题和答案都告诉我输出是假设代表系统时间,而不是。

我是否误解了System.currentTimeMillis的工作原理?

3 个答案:

答案 0 :(得分:2)

"当前时间毫秒"是UTC时间1970年1月1日午夜以来的毫秒数。

底层签名的64位整数将在大约2.92亿年内回归。 https://en.wikipedia.org/wiki/Year_2038_problem

答案 1 :(得分:0)

在文档中,您可以阅读它返回

  

当前时间与之间的差异,以毫秒为单位   UTC时间1970年1月1日午夜。

所以你不必担心。这里是文档:https://docs.oracle.com/javase/7/docs/api/java/lang/System.html#currentTimeMillis()

答案 2 :(得分:0)

它做什么?

valueInMIllis =(当前设备/系统时间)MINUS(1970年1月1日00:00:00.0 UTC)

如果某人"将当前系统时间和日期更改为某个其他值,则唯一可能遇到问题的方法"

返回自1970年1月1日00:00:00.0 UTC以来的当前时间(以毫秒为单位)。 无论系统的时区如何,此方法始终返回UTC时间。 这通常称为" Unix时间"或"纪元时间"。

此方法不应用于测量超时或 其他经过时间的测量,因为改变系统时间会影响,否则它的工作正常。