JS日期到ISO字符串异常行为

时间:2019-02-14 06:33:23

标签: javascript date

new Date("2018-09-9").toISOString()

这给出了2018-09-09T04:00:00.000Z

new Date("2018-09-19").toISOString()

"2018-09-19T00:00:00.000Z"

我来自美国,所以4:00:00似乎是正确的UTC时间,但是如果我提供的日期大于9,那么00:00:00就是我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

这是正确的行为。请参阅Javacript日期参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

  

注意:由于浏览器的差异和不一致,强烈建议不要使用Date构造函数(和Date.parse,它们等效)来解析日期字符串。仅按照约定,对RFC 2822格式字符串的支持。对ISO 8601格式的支持有所不同,因为仅日期字符串(例如“ 1970-01-01”)被视为UTC,而不是本地。

您的第二个版本正在使用ISO 8601格式YYYY-MM-DD格式,该格式被视为UTC。如果您在第一个示例中使用2018-09-09而不是2018-09-9,它将也被视为UTC而不是本地时间。