繁体   English   中英

为什么 Date.now() 和 System.currentTimeMillis() 返回不同的值?

[英]Why are Date.now() and System.currentTimeMillis() returning different values?

我有一个连接在一起的安卓应用程序和一个网络应用程序。 单击 Web 应用程序中的按钮时,会立即向 Android 应用程序发送通知。 单击网络应用程序上的按钮的那一刻,我需要在两个应用程序中记录当前时间。

在网络应用程序上,我使用 Date.now() 来记录时间。 在 android 应用程序中,我使用 System.currentTimeMillis() 来记录时间。 在 Web 应用程序中单击按钮时,通知只需几秒钟即可到达 android 应用程序。 因此,两个地方记录的时间必须相差几秒钟。

但是在这两个地方都记录了以下时间戳:

Web app- using Date.now() - 1653945533308

Android app- using System.currentTimeMillis() - 1653945810727

这些时间戳相差 5 分钟,这是错误的。 看起来由于某种原因,2 个 api 记录的时间戳在同一时间并不完全相同。

为什么会这样? 有没有办法确保“JavaScript 中的 Date.now()”和“Java 中的 System.currentTimeMillis()”都同时记录相同的时间戳?

正如@RobbyCornelissen 所说,这可能与系统时钟有关。 JavaScript 日期只能与运行它的系统的时钟一样准确。 有关该主题的简要讨论,请参阅此相关问题 Java 也是如此 ,Java Docs中也有关于系统时间和 UTC 时间之间差异的讨论。 我假设你在某种物理设备的模拟器上运行你的 android-app,所以这可能是系统时间不同。

以编程方式,您可以根据用例始终通过将时钟/日期从 Web 应用程序传递到 API 来解决这个问题,或者反过来。 时钟一直是计算机设计中的一个问题,并且有很多关于它的研究,所以你应该不难在文献中偶然发现一些类似的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM