Javascript Date.now()跨机器/时区的一致性

时间:2016-06-24 22:56:14

标签: javascript node.js browser

让我们说我有一个从纽约运行的node.js服务器,我有一个客户端使用web brwoser从加利福尼亚连接到它。我可以合理地期望从客户端调用Date.now()来匹配从服务器上的node.js调用的Date.now()到~50-100毫秒内(假设它们在同一时刻被调用) ?从理论上讲,Date.now()应始终在机器和时区之间保持一致,因为Date.now()"返回自1970年1月1日00:00:00 UTC"以来经过的毫秒数。正确?

1 个答案:

答案 0 :(得分:3)

不,您不一定认为客户端和服务器时间是同步的。

其中一个原因是Date.now()基于用户操作系统的系统时间。你无法控制,时间可能正确,可能会有点甚至完全错误。

你可以自己试试:

> Date.now()
1466809144962

> Date.now()
1403650777388

我运行了Date.now()两次,一次在Windows中设置了正确的时间。然后我将系统时钟的年份更改为2014并再次运行Date.now()

在没有服务器端验证的情况下,永远不要依赖用户控制的信息的正确性。