我遇到时区,DST和Node.js的问题。它无法正确识别DST效果。我的操作系统是Windows 8.1,并且具有时区值和DST设置良好。我尝试了这两种方法:
1)节点的日期对象
我在Node Prompt中键入以下代码,并以斜体显示答案:
new Date()
Tue Sep 09 2014 18:42:36 GMT-0200(Horáriobrasileirodeverão(巴西夏令时))
然而,巴西的夏令时开始于10月19日,我们现在不在夏令时。因此,小时从现在起1小时后移动。
2)节点时间
我从npm获得了节点时间包,以便能够更改时区。在代码中:
time = require('time');
dateFormat = require('dateformat');
now = time.Date();
console.log(dateFormat(now.setTimezone('America/Sao_Paulo').getTime(), "yyyy-mm-dd HH:MM:ss Z"))
因此,我得到了
2014-09-09 18:42:36 GMT-0200
巴西正常时区是GMT-0300。小时也是1小时的转移。
我做错了吗?有解决方法吗?
答案 0 :(得分:1)
节点时间包does not work on Windows。我甚至无法安装它,所以我不确定你是怎么做的。你应该卸载它。
如果您需要支持Node(或浏览器)中的非本地时区,建议moment.js使用moment-timezone插件。
在Windows上运行new Date()
并为巴西设置时区,我得到了正确的输出。
唯一可以解释您的结果的是如果时区注册表设置被修改 - 但是您还会在任务栏上的系统时钟中看到错误的时间。所以我很抱歉,但我不能复制它的那一部分。