如果我在毫秒以下日期:JSON.stringify連載日期不正確
星期二1984年4月3日00:00:00 GMT + 0100(BST)
當我運行:
console.log(JSON.stringify(new Date(449794800000)))
它的輸出是:
「1984-04-02T23:00:00.000Z」
但是輸出應該是:
「1984-03-03T23:00:00.000Z」
如果我在毫秒以下日期:JSON.stringify連載日期不正確
星期二1984年4月3日00:00:00 GMT + 0100(BST)
當我運行:
console.log(JSON.stringify(new Date(449794800000)))
它的輸出是:
「1984-04-02T23:00:00.000Z」
但是輸出應該是:
「1984-03-03T23:00:00.000Z」
這就是所謂的ISO日期格式,是發送日期的標準方法。它是明確的和容易解析的,但不是爲了最大程度的人類可讀性而設計的。 JSON.stringify()
已被寫入特殊處理日期,因爲日期不是JSON值。如果你想讓它更具人類可讀性,你可以改爲JSON.stringify(date.toString())
。日期更改的原因是它將您的時區(格林尼治標準時間+ 1)轉換爲格林尼治標準時間,因此它會返回一個小時,並在前一天結束。
如果你想創建一個日期對象存儲在一個GMT一天開始,你可以做到以下幾點:
const dateHere = new Date(2017, 7, 4)
//60000 ms per minute
const utcMillis = dateHere.getTime() - dateHere.getTimezoneOffset() * 60000
const utcDate = new Date(utcMillis)
console.log(utcDate.toISOString()) //"2017-08-04T00:00:00.000Z"
因爲日期時間449794800000在JavaScript是「1984-04-02T23:00: 00.000Z」
自己嘗試一下,運行
console.log(new Date(449794800000)).
事實上,1000比較它與UNIX時間,(使用this除以你的電話號碼從毫秒到秒改造日期),日期是正確的。它應該是「1984-04-02T23:00:00.000Z」而不是「1984-03-03T23:00:00.000Z」
因爲Unix時間戳449794800是1984-04-02T23:00:00.000Z '。你爲什麼認爲這是一個月前? – randomir
'JSON.stringify()'實際上調用日期對象的'.toJSON'方法,該方法返回字符串'「1984-04-02T23:00:00.000Z」'。它不影響日期對象的'.toJSON'方法的工作方式。 – undefined