我对时区,DST和Node.js有问题。 它不能正确识别DST效应。 我的操作系统是Windows8.1,并且有很好的时区值和DST设置。 我尝试了这两种方法:
1)节点的日期对象
我在Node Prompt中键入了以下代码,并收到了斜体的答案:
new Date()
2014年9月9日星期二18:42:36 GMT-0200(Horário brasileiro de Verão(巴西夏令时))
然而,巴西DST将于10月19日开始,我们现在不在DST中。 因此,时点从现在起偏移1小时。
2)节点时间
我从npm获得了node-time包,以便能够更改时区。 在代码中:
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.js和moment-timezone插件。
在Windows上运行new Date()
,时区设置为巴西,我会得到正确的输出。
唯一能解释结果的是,如果时区注册表设置被修改了,那么您也会看到任务栏上的系统时钟中出现了错误的时间。 所以很抱歉,但我不能再现这部分。