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

比方说,我有一个从纽约运行的node.js服务器,并且我有一个从加利福尼亚州使用web brwoser连接到它的客户端。 我有多合理地期望Date.now()从客户端调用来匹配从服务器上的node.js调用的Date.now()到〜50-100毫秒(假设它们在同一时刻被调用)? 从理论上讲,Date.now()应该始终在机器和时区之间保持一致,因为Date.now()“返回从1970年1月1日00:00:00开始经过的毫秒数”对吧?

不,你不一定假设客户端和服务器时间是同步的。

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

你可以尝试一下:

 > Date.now() 1466809144962 > Date.now() 1403650777388 

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

永远不要依赖于没有服务器端validation的用户控制下的信息的正确性。