【问题标题】:node.js returns GMT time and not local time for "new Date()". Is that a bug?node.js 为“new Date()”返回 GMT 时间而不是本地时间。那是一个错误吗?
【发布时间】:2012-03-31 21:43:54
【问题描述】:

如果不是错误,如何告诉节点我的时区? 如果有错误,是否已经报告?

【问题讨论】:

  • 既然您知道自己的时区与 GMT 的关系,您就不能用适当的偏移量进行调整吗?似乎使用 GMT 来灵活处理不同的服务器位置是合适的

标签: javascript datetime node.js date


【解决方案1】:

如果它是一个错误,它在我的 Node.js 版本中不存在。确实,Node.js REPL 在我的版本中更喜欢在 GMT 中宣布:

> new Date()
Sat, 31 Mar 2012 21:51:47 GMT

但它实际上是时区感知的,这不是 REPL 在对其进行字符串化时显示的内容:

> new Date().getTimezoneOffset()
-120
> "" + new Date()
'Sat Mar 31 2012 23:51:56 GMT+0200 (CEST)'

(我在 Ubuntu 上运行 Node.js v0.6.1。)

【讨论】:

  • 这对我来说确实像一个错误。
【解决方案2】:

这不是错误,只是 Node 决定如何在其 REPL 中表示 Date 对象的选择。此外,从节点 v0.7.x 开始,此输出已更改为显示本地时间,与浏览器行为匹配:

☮ ~ (master) ⚡ node
> process.version
'v0.7.7'
> new Date
Sat Mar 31 2012 15:12:13 GMT-0700 (PDT)

【讨论】:

  • 在控制台中显示日期在 ECMAScript 中尚未标准化。所以这没关系。感谢@TooTallNate
  • 节点 6.9.4 中的行为仍然相同。默认情况下不应该根据机器设置返回吗(就像浏览器一样)?
  • 截至v10.15 LTS,行为仍保持原样(获取UTC而不是本地时间)!这个错误是否“未修复”?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 2019-12-29
  • 2021-03-09
  • 2011-07-10
  • 2020-11-06
  • 1970-01-01
相关资源
最近更新 更多