Daylight Savings Time wrongly identified by Node.js
我遇到了时区,DST和Node.js的问题。 它无法正确识别DST效果。 我的操作系统是Windows 8.1,并且具有时区值和DST设置良好。 我尝试了这两种方法:
1)节点的日期对象
我在Node Prompt中输入以下代码并以斜体显示答案:
1 | new Date() |
Tue Sep 09 2014 18:42:36 GMT-0200(Horáriobrasileirode ver?o(巴西夏令时))
然而,巴西的DST刚刚在10月19日开始,我们现在不在DST。 因此,小时从现在开始1小时。
2)节点时间
我从npm获得了节点时间包,以便能够更改时区。 在代码中:
1 2 3 4 5 | 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小时的转移。
难道我做错了什么? 有解决方法吗?
节点时间包在Windows上不起作用。 我甚至无法安装它,所以我不确定你是怎么做的。 你应该卸载它。
如果您需要支持Node(或浏览器)中的非本地时区,我建议使用moment-timezone插件的moment.js。
在Windows上运行
唯一可以解释您的结果的是如果时区注册表设置被修改 - 但是您还会在任务栏上的系统时钟中看到错误的时间。 所以我很抱歉,但我不能复制它的那一部分。