我有一個場景,我正在使用AngularJS來讀取日期。有趣的是,它將我的日期值減1。Javascript新日期減少日期一天
這是怎麼發生的?
new Date("2016-01-06T00:00:00")
give me result as
Tue Jan 05 2016 16:00:00 GMT-0800 (Pacific Standard Time)
我有一個場景,我正在使用AngularJS來讀取日期。有趣的是,它將我的日期值減1。Javascript新日期減少日期一天
這是怎麼發生的?
new Date("2016-01-06T00:00:00")
give me result as
Tue Jan 05 2016 16:00:00 GMT-0800 (Pacific Standard Time)
這是因爲當你在JavaScript中使用的new Date()
,將其轉換並打印在瀏覽器中時區的日期。
因此,如果您打印:
new Date("2016-01-06T00:00:00-0800")
你會得到,因爲你的時區(取決於瀏覽器)和UTC時間之間的差異-0800
你想要的實際輸出。
UTC時區來解釋ISO 8601格式的論點,即不包含時區信息(注意,ECMAScript的2015年規定,如果沒有一個時區的日期時間字符串爲當地的對待,而不是UTC) 。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse
由於您的日期字符串顯得缺乏一個,JS假設是UTC時間。你看到的結果是相同的時刻,抵消你的時區。您所需要做的就是將時區數據提供給您正在解析的字符串。
這是因爲日期正在考慮您的瀏覽器的時區帳戶,在您的情況是在PST。它同樣對我來說,在EST:
test = new Date("2016-01-06T00:00:00")
星期二2016年1月5日19:00:00 GMT-0500(EST)
您仍然可以通過使用獲得時間在UTC任何的.getUTC*
功能,像這樣:
test.getUTCDate();
非常簡單...第一個日期字符串是UTC,你的時區偏移距離午夜8小時 – charlietfl
正如上面所述,你需要調整你的時區 – AGE
['Date.parse'](https:// developer .mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse) – Andreas