我可以使node.js日期始终为UTC / GMT吗?

时间:2014-08-18 16:22:27

标签: javascript node.js date timezone

我的应用程序在Linux服务器上运行,其中时间(自然)设置为UTC / GMT。但是,该应用程序是在Mac桌面上开发的,其中时间通常设置为本地时区。

我可以更改代码中的每个new Date()来运行:

var date = new Date().getTime();

因此确保服务器上的日期始终是GMT,但这看起来不够优雅。

我理解previous versions of node used to always return UTC/GMT。有没有办法让这种行为回归?

编辑:删除了为每条评论添加时区偏移量getTime() - 因为getTime()已经是UTC格式。

3 个答案:

答案 0 :(得分:18)

您可以使用node.js的TZ配置参数,如下所示。

对于bash(及相关)

export TZ=UTC

For Powershell

$env:TC = 'UTC'

然后两者:

nodejs server/index.js

答案 1 :(得分:9)

来自the MDN docs on Date#getTime

  

getTime方法返回的值是自1970年1月1日00:00:00 UTC以来的毫秒数。

假设您将日期/时间存储为数字(我建议),getTime 已经是UTC,始终

假设您的客户端然后从服务器请求日期。如果服务器提供的日期为timestamp,即,则客户端可以执行以下操作:

new Date(timestamp);

它将根据客户端的当地时间进行正确调整。

当然,也许我误解了你的问题。但我只想指出这一点......

new Date().getTime() + new Date().getTimezoneOffset();

......永远不应该有意义。它采用基于UTC的时间,然后进一步抵消它,实质上是双倍抵消时间。

答案 2 :(得分:3)

moment.js是一个流行的节点和浏览器模块,用于处理日期。它有一个utc模式,可以满足您的需求。 http://momentjs.com/docs/#/manipulating/utc/