2015-10-18 231 views
1

我使用當前時間創建一個新的Date(),並將其小時 設置爲0.直到前幾天,一切都很順利,但現在它已從前一天變爲 23:00而不是現在的00:00。Date()函數延遲一小時

有誰知道爲什麼?

的代碼可以在這裏找到https://jsfiddle.net/f1kshewz/2/

輸出:

星期六2015年10月17日23:00:00 GMT-0300(BRT)

+0

夏令時。我會建議你閱讀這個:http://stackoverflow.com/questions/16946002/javascript-time-zone-is-wrong-for-past-daylight-saving-time-transition-rules –

回答

3

根據您的時間偏移我假設您在巴西?所以它看起來像夏令意味着您的本地時間上前相對於一小時GMT在昨天午夜http://www.timeanddate.com/time/change/brazil/brasilia?year=2015

我發現moment.js非常有用的日期和時間的工作時:http://momentjs.com/

+0

謝謝@atomless幫助!是的,這是夏令時,因此我可以簡單地通過在設置上添加條件來解決問題。關於圖書館,我實際上使用那個;)謝謝 – henriale

+0

@AlexandreAraujo很高興我能幫上忙。如果你使用時區庫,你不需要擔心一個條件,因爲它會爲你處理:http://momentjs.com/timezone/docs/ – atomless

4

使用此代碼檢查時區:

var d = new Date() 
var n = d.getTimezoneOffset(); 
console.log(n); // minutes 

並使UTC時間像這樣:

new Date(Date.UTC(year, month, day, hour, minute, second)) 
+0

謝謝你的答案!但我用'isDaylightSavingTime()'函數解決了這個問題! – henriale