我正在从字符串创建一个新日期
var s = "2017-12-06"
var dt = new Date(s)
console.log(dt) // outputs Tue Dec 05 2017 19:00:00 GMT-0500 (EST)
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
Date.toString()
在您的本地时区格式化,但由于您传入了ISO-8601字符串,因此该值将被解析为它的UTC.
从Date.parse()
文档中(因为Date(String)
构造函数被记录为行为Date.parse
):
日期时间字符串可以是简化的ISO 8601格式.例如,可以传递和解析"2011-10-10"(仅限日期)或"2011-10-10T14:48:00"(日期和时间).如果字符串仅为ISO 8601日期,则UTC时区用于解释参数.如果字符串是ISO 8601格式的日期和时间,则将其视为本地.
所以你最终Date
得到的相当于2017-12-06T00:00:00Z.但是Date.toString()
在你当前的时区即时显示 - 如果你在美国/纽约或类似的时区,那个时刻落后于UTC 5小时,这意味着它将在12月5日晚7点打印.
归档时间: |
|
查看次数: |
1128 次 |
最近记录: |