我做一些javascript日期的東西,我執行以下操作:的Javascript劃時代日期不正確
console.log(new Date(0));
我期望看到的* nix的時代,但我奇怪的返回:
Wed Dec 31 1969 19:00:00 GMT-0500 (Eastern Standard Time)
發生了什麼?
我做一些javascript日期的東西,我執行以下操作:的Javascript劃時代日期不正確
console.log(new Date(0));
我期望看到的* nix的時代,但我奇怪的返回:
Wed Dec 31 1969 19:00:00 GMT-0500 (Eastern Standard Time)
發生了什麼?
我無法找到解釋它的任何資源,但這種「錯誤」是因爲我的時區(據我可以告訴)
我的時區爲GMT-0500
,它的背後是UTC時間5小時。向Wed Dec 31 1969 19:00:00
添加5小時並獲得Epoch(Thurs Jan 1 1970 00:00:00
)
您正在設置內部時間值,即UTC,但看到一個基於系統設置的字符串,該字符串可能具有UTC-05的偏移量:00。
ECMAScript規範說明了Date構造函數和實例是如何工作的。鑑於:
new Date(0)
日期構造函數被調用用一個參數(§20.3.2.2 Date(value)),所以它創建了一個Date實例與它的根據參數的類型內部時間值集。由於該值是一個數字,因此時間值被設置爲該數字。
時間值是從1970-01-01T00:00:00Z §20.3.1.1 Time Values and Time Range以毫秒爲單位的偏移量。請注意,它基於UTC。
的console.log的行爲完全依賴於實現的,所以你會得到什麼:
console.log(dateInstance);
取決於主機。但是,大多數人似乎都會調用對象的方法toString方法,該方法根據主機系統的時區設置(§20.3.4.41 Date.prototype.toString())返回實施相關字符串。那就是「本地」時間。
時區偏移量可以使用getTimezoneOffset確定。這是在幾分鐘內,與ISO 8601偏移量相反(例如,UTC-05:00將爲+300)。如果要獲取表示內部時間值且沒有偏移量的日期字符串,請使用toUTCString。
嗯,它告訴你在輸出中你正在看一個特定的時區。看看'(新日期(0))。toISOString()' –
不會有任何資源解釋它,因爲它只是普通的舊時區:) –