2013-10-17 88 views
1

我有一些JavaScript是行爲怪異的。我創建了兩個日期,但它們隨機在不同的時區,這在計算兩者之間的差異時讓我感到困惑。我在EST時區,但由於某種原因,第一個日期被創建爲EDT日期。javascript時區怪異:新日期()在不同的時區創建日期

基本上我的問題是爲什麼這個JavaScript產生的輸出,它並

var xstartTime = new Date(startYear, StartMonth, StartDay, StartHour, StartMinute, 0, 0); 
var xendTime = new Date(EndYear, EndMonth, EndDay, EndHour, EndMinute, 0, 0); 
console.log("StartMinute" + StartMinute + "StartHour" + StartHour + "StartDay" + StartDay + "StartMonth" + StartMonth + "startYear" + startYear); 
console.log(xstartTime); 
console.log("EndMinute" + EndMinute + "EndHour" + EndHour + "EndDay" + EndDay + "EndMonth" + EndMonth + "EndYear" + EndYear); 
console.log(xendTime); 

StartMinute0StartHour0StartDay3StartMonth10startYear2013

日11月3日00:00:00 EDT 2013

EndMinute59EndHour23EndDay3EndMonth10EndYear2013

日11月3日23:59:00 EST 2013

回答

3

這不是一個JavaScript的問題它與時區有關。從this維基百科文章摘自:

的第一個星期日在11月,凌晨2點EDT,時鐘是 搬回到凌晨1:00 EST,從而「複製」一個小時。

你的日期是巧合月2013 xstartTime的第一個星期日爲00:00 EDT但由於xendTime是凌晨1點之後,它的時區是EST。

+1

幹得好! [小心,Skeet](http://stackoverflow.com/a/6841479/825789)! :-) – bfavaretto