如果我有以下日期(以毫秒为单位):
Tue Apr 03 1984 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”
答案 0 :(得分:0)
这称为ISO日期格式,是发送日期的标准方式。它是明确且易于解析的,但不是为最大限度地提高人类可读性而设计的。编写JSON.stringify()
来处理特别类似的日期,因为日期不是JSON值。如果您希望它更具人性化,您可以执行JSON.stringify(date.toString())
。日期更改的原因是它将时区从您的(GMT + 1)切换到GMT,因此它可以返回一小时并在前一天结束。
如果您想创建一个以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"
答案 1 :(得分:0)
因为javascript中dateTime中的449794800000是“1984-04-02T23:00:00.000Z”
亲自试试,运行
console.log(new Date(449794800000)).
实际上,将它与unix时间进行比较,(使用this并将数字除以1000以将其从毫秒转换为秒),日期是正确的。它应该是“1984-04-02T23:00:00.000Z”而不是“1984-03-03T23:00:00.000Z”