javascript new日期与字符串param有错误的日期

时间:2017-12-11 14:16:34

标签: javascript date

我正在从字符串

创建一个新日期
var s = "2017-12-06"
var dt = new Date(s)
console.log(dt) // outputs Tue Dec 05 2017 19:00:00 GMT-0500 (EST)

我错过了什么?

1 个答案:

答案 0 :(得分:8)

Date.toString()在您的本地时区格式化,但由于您已传入ISO-8601字符串,因此该值已解析,就像它的UTC一样

Date.parse() documentation开始(因为记录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()会在您当前的时区显示您的即时时间 - 如果您在美国/纽约或类似的时区落后于此时刻的5小时,那就意味着&# 39;将于12月5日晚上7点打印。