我的应用程序在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格式。
答案 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/