Android System.currentTimeMillis()是两个设备之间相差数小时的值

Android System.currentTimeMillis()是两个设备之间相差数小时的值,android,Android,在编写应用程序时,我意识到在两台设备上由System.currentTimeMillis()检索的epochtime相差近7小时。 例如,一个检索到:146599565478,另一个14659766000。 这是意料之中的事吗?如果是这样的话,这种差异是恒定的,这将允许建立偏移量,还是会以某种方式改变?系统。currentTimeMillis()报告设备中实时时钟的值。这可能是: 由移动运营商(如NITZ)的信号设置 由查询SNTP服务器的设备设置 由用户通过设置应用程序设置 后一个选项意味

在编写应用程序时,我意识到在两台设备上由
System.currentTimeMillis()
检索的epochtime相差近7小时。 例如,一个检索到:146599565478,另一个14659766000。
这是意料之中的事吗?如果是这样的话,这种差异是恒定的,这将允许建立偏移量,还是会以某种方式改变?

系统。currentTimeMillis()
报告设备中实时时钟的值。这可能是:

  • 由移动运营商(如NITZ)的信号设置
  • 由查询SNTP服务器的设备设置
  • 由用户通过设置应用程序设置
后一个选项意味着
System.currentTimeMillis()
可以在设置应用程序允许的日期和时间范围内报告任何可能的值。在根设备上,用户将有更多的选项来设置日期和时间,超出设置支持的范围

您可以安全地假设设备报告的时间对于该设备和该用户来说都是正常的。毕竟,如果用户决定声明当前时间是1977年6月15日10:21,那就是用户的决定

假设该设备报告的时间与任何其他设备报告的任何时间相关是不安全的。依靠您的服务器确定时间或从其他来源获取当前时间(例如,自己调用SNTP服务器)


请注意,这与大多数其他计算机硬件上的时间工作方式没有明显区别。

这两种设备上的时间和tmezone是多少。它们是相同的吗?并且您确定两台设备都以相同的当前系统时间运行吗?原因计算1970年1月1日00:00:00.0和当前系统之间的值time@PankajKumar时间很重要,但时区并不重要——此方法始终返回UTC时间,而与系统的时区无关。