DST在Javascript日期对象中存储日期时出现问题

DST在Javascript日期对象中存储日期时出现问题,javascript,date,dst,Javascript,Date,Dst,我有一个简单的Javascript代码 var d = new Date(2011, 9, 8); alert(d); // Show: Fri Oct 7 23:00:00 UTC-0400 2011 重要提示:我的时区是“智利圣地亚哥”,我将计算机时钟设置为:2011年10月2日 警报显示当天是7点!!。。。为什么?我怎样才能把它做好?(问题只在这一天)根据智利的DST变化总是在10月的第二个完整周末,从午夜开始(让我们忽略今年延长的DST,因为很可能你的计算机不知道) 这意味着,正如使用

我有一个简单的Javascript代码

var d = new Date(2011, 9, 8);
alert(d); // Show: Fri Oct 7 23:00:00 UTC-0400 2011
重要提示:我的时区是“智利圣地亚哥”,我将计算机时钟设置为:2011年10月2日

警报显示当天是7点!!。。。为什么?我怎样才能把它做好?(问题只在这一天)

根据智利的DST变化总是在10月的第二个完整周末,从午夜开始(让我们忽略今年延长的DST,因为很可能你的计算机不知道)

这意味着,正如使用脚本I所示,在您的时区2011年10月8日午夜不能在UTC-0300中表示,因此它会自动切换到UTC-0400以表示同一时间

我可以在我的时区(阿姆斯特丹,UTC+1/2h)中复制您的问题,方法是询问2011年3月27日凌晨2:00(当前时区为CEST=UTC+0200)(此时夏季时间(CEST)开始,时钟从UTC+0100调整为UTC+0200)(请记住,北半球的情况正好相反)

无法在UTC+0200中有效表示,因此系统选择UTC+0100并输出

Sun Mar 27 2011 01:00:00 GMT+0100 (CET)
要显示/计算
日期对象的各个部分,请使用相应的。

您真的确定如果使用
新日期(2011年9月7日)
它也会显示为
10月7日星期五…
?否则这将是一个时区问题。100%确定。。。将时区设置为“智利圣地亚哥”以查看问题啊!如果你把日期定在2011年10月8日之后?此外,你在什么系统上测试这个?我在Windows(xp和2003)中测试它。问题只是今天。这一天goberment chage date用的是萨姆纳(或冬天…在不知道)白天的光照时间。奇怪。你能试着从(当然是从2011年9月7日20日0月0日)开始运行脚本并将其输出包含到你的问题中吗?谢谢你的解释。现在我知道了问题,我知道了原因,但我不知道解决方案:(谢谢Marcel…我认为你的解决方案非常好,我可以像使用模式一样使用它。 Sun Mar 27 2011 01:00:00 GMT+0100 (CET)
var d = new Date(Date.UTC(2011, 9, 9));
alert(d.toUTCString()); // Shows: Sun, 9 Oct 2011 00:00:00 UTC