Javascript日期:处理夏令时的最佳方法是什么?

dav*_*jhp 14 javascript date

在之前的一个问题中,我写了一篇关于javascript日期函数的信息,这个函数在11/07/101神秘地停止了.感谢stackoverflow用户,我被告知我的问题是夏令时. Javascript日期,这是我的错误还是我发现了一个错误?

所以我对此的最后一个问题是Javascript中推荐的处理夏令时的方法是什么?

http://code.google.com/p/datejs/解决这个最好的方法?

bob*_*nce 21

最好的方法是不要处理夏令时.使用UTC方法,您不必担心跨越DST边界或任何其他时区不连续(区域设置时区规则可能因为更多原因而不仅仅是DST而更改).

var timestamp= Date.UTC(2010, 10-1, 31, 0, 0, 0); // zero-based month: 9->october
var nextday= new Date(timestamp+86400000); // add one day
var ymd= [
    nextday.getUTCFullYear(),
    nextday.getUTCMonth()+1, // zero-based month
    nextday.getUTCDate()
].join('-');
alert(ymd); // 2010-11-1
Run Code Online (Sandbox Code Playgroud)

如果以上已做同new Date(2010, ...)getDate()等,它会返回2010-10-31,一天添加到DST改变失败的原因(在我区,反正).

遗憾的是,"默认"最明显的方法Date是关于本地时间,特别是因为JavaScript在"本地时间"实际上为脚本提供了非常少的上下文.UTC是一个更稳定的主张.