System.currentTimeMillis()是两个设备之间几个小时的差异

时间:2016-06-15 14:14:18

标签: android

在编写应用程序时,我意识到System.currentTimeMillis()在两台设备上检索到的纪元时间相差近7个小时。 例如,一个检索到:1465999565478,另一个1465976266000。 这是预期的吗?如果是这样,这种差异是不变的,这将允许建立一个偏移,或者它可以以某种方式改变?

1 个答案:

答案 0 :(得分:4)

System.currentTimeMillis()报告设备中实时时钟的值。那可能是:

  • 由来自移动运营商(例如,NITZ)的信号设置
  • 由查询SNTP服务器的设备设置
  • 由用户通过“设置”应用
  • 设置

后一个选项意味着System.currentTimeMillis()可以在“设置”应用允许的日期和时间范围内报告任何可能的值。在有根设备上,用户可以拥有更多选项来设置日期和时间,超出设置支持的范围。

您可以安全地假设设备报告的时间适用于该设备和该用户。毕竟,如果用户决定声称当前时间是1977年6月15日10:21,那就是用户做出的决定。

您认为设备报告的时间与任何其他设备报告的任何时间相关是不安全的。要么依靠您的服务器来确定时间,要么从其他来源获取当前时间(例如,自己呼叫SNTP服务器)。

请注意,这与大多数其他计算机硬件的工作时间没有显着差异。