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

mik*_*ana 19 javascript timezone date node.js

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

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

var date = new Date().getTime();
Run Code Online (Sandbox Code Playgroud)

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

我理解以前版本的节点总是返回UTC/GMT.有没有办法让这种行为回归?

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

Er.*_*wal 26

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

对于bash(及相关)

export TZ=UTC
Run Code Online (Sandbox Code Playgroud)

对于Powershell

$env:TC = 'UTC'
Run Code Online (Sandbox Code Playgroud)

那么两个:

nodejs server/index.js
Run Code Online (Sandbox Code Playgroud)


Dan*_*Tao 10

来自MDN文档Date#getTime:

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

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

假设您的客户端然后从服务器请求日期.如果服务器提供的日期timestamp,这是一个,客户端可以然后执行:

new Date(timestamp);
Run Code Online (Sandbox Code Playgroud)

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

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

new Date().getTime() + new Date().getTimezoneOffset();
Run Code Online (Sandbox Code Playgroud)

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


Joh*_*gue 5

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