在美国,DST目前计算为三月第二个星期日和十一月第一个星期日之间的时间。
为了计算DST开始的日期,我们首先计算当前年份,然后在3月份的第一个工作日进行计算,并基于此计算第二个星期日。 11月也是如此,最后是测试今天的日期是否在两个锚定日期之间。正确时,dst变为“1”。
对于我的需要日级精度是足够的,但它可以建立更高的精度。
var dst = 0
var d = new Date();
var myYear = parseInt(d.getFullYear())
d.setFullYear(myYear , 2, 1);
var what_Weekday_Mar1 = d.getDay();
var DST_StartDay
switch(what_Weekday_Mar1) {
case 0:
DST_StartDay = 14
break;
case 1:
DST_StartDay = 13
break;
case 2:
DST_StartDay = 12
break;
case 3:
DST_StartDay = 11
break;
case 4:
DST_StartDay = 10
break;
case 5:
DST_StartDay = 9
break;
case 6:
DST_StartDay = 8
break;
}
var DST_on_Date = new Date()
DST_on_Date = DST_on_Date.setFullYear(myYear,2,DST_StartDay)
d.setFullYear(myYear , 10, 1);
var what_Weekday_Nov1 = d.getDay();
switch(what_Weekday_Nov1) {
case 0:
DST_EndDay = 1
break;
case 1:
DST_EndDay = 7
break;
case 2:
DST_EndDay = 6
break;
case 3:
DST_EndDay = 5
break;
case 4:
DST_EndDay = 4
break;
case 5:
DST_EndDay = 3
break;
case 6:
DST_EndDay = 2
break;
}
var DST_off_Date = new Date()
DST_off_Date = DST_off_Date.setFullYear(myYear,10,DST_EndDay)
var toDay = new Date();
/*if today is between Daylight Savings On and Off times */
if (today>DST_on_Date && today<DST_off_Date) {
dst = 1;
}
希望这有助于!
-RL
欢迎的话,请不要忘了参观http://stackoverflow.com/faq – Reigel 2010-07-07 01:29:48
我问一个相关的问题,我找出几种方法可以做到做到这一点,没有一个我觉得最佳。但是,它们仍然可能是相关的。http://stackoverflow.com/questions/4903722/working-with-timezones-and-daylight-savings-time-in-javascript – Tauren 2011-02-04 23:25:56