为什么我的javascript(node.js)给了我不正确的时间戳?

TIM*_*MEX 9 javascript timestamp date node.js

我在控制台中输入"日期"......我得到Tue Sep 20 01:01:49 PDT 2011......这是正确的.

但是我在node.js中这样做了,我得错了.

 var ts = String(Math.round(new Date().getTime() / 1000));
Run Code Online (Sandbox Code Playgroud)

输出为:1316505706,落后一小时.

mat*_*ski 8

@KARASZI对根本原因绝对正确:除非你操纵它们,否则Unix时间戳总是UTC.我建议如果你想要一个Unix时间戳,你应该把它留在UTC,如果你需要向用户显示一个格式化的时间,只转换为本地时间.

这样做的第一个好处是所有服务器都可以"同时"说话.例如,如果您已将服务器部署到Amazon EC2 US East和Amazon EC2 US West并且它们共享一个公共数据库,则可以在数据库和服务器上使用UTC时间戳,而无需每次都担心时区转换.这是使用UTC时间戳的一个很好的理由,但它可能不适用于您.

这样做的第二个好处是,您可以根据经过的时间来衡量事物,而不必担心夏令时(或时区,如果您正在测量正在移动的平台上的时间!).这并没有出现太多,但是如果你因为本地时间在你测量的时候"倒退"了一小时就会出现负面时间的情况,那你就会非常困惑!

我能想到的第三个原因是非常小的,但是一些性能极客会非常欣赏它:你可以通过使用Date类的"now"函数获得原始UTC时间戳,而无需每次都分配新的Date对象.

var ts = Date.now() / 1000;
Run Code Online (Sandbox Code Playgroud)


Der*_*ker -4

date在控制台中使用将返回服务器时间,而在网页上使用 JavaScript 将返回客户端的本地时间。

  • 我使用的是node.js,所以它是服务器javascript (4认同)