Javascript JS日期到ISO字符串的奇怪行为
这给出了Javascript JS日期到ISO字符串的奇怪行为,javascript,date,Javascript,Date,这给出了2018-09-09T04:00:00.000Z 何处为 new Date("2018-09-9").toISOString() 给出“2018-09-19T00:00:00.000Z” 我来自美国,所以UTC时间4:00:00似乎是正确的,但如果我给出的日期大于9,它会给出00:00:00我遗漏了什么吗?这是正确的行为。请参阅JavaScript日期的参考: 注意:由于浏览器差异和不一致,强烈建议使用日期构造函数(和date.parse是等效的)解析日期字符串。仅按惯例支持RFC 2
2018-09-09T04:00:00.000Z
何处为
new Date("2018-09-9").toISOString()
给出“2018-09-19T00:00:00.000Z”
我来自美国,所以UTC时间
4:00:00
似乎是正确的,但如果我给出的日期大于9,它会给出00:00:00
我遗漏了什么吗?这是正确的行为。请参阅JavaScript日期的参考:
注意:由于浏览器差异和不一致,强烈建议使用日期构造函数(和date.parse是等效的)解析日期字符串。仅按惯例支持RFC 2822格式字符串。对ISO 8601格式的支持不同之处在于,仅日期字符串(例如“1970-01-01”)被视为UTC,而不是本地字符串
您的第二个版本使用的是被视为UTC的ISO 8601格式
YYYY-MM-DD
。如果您在第一个示例中使用2018-09-09
而不是2018-09-9
,它也将被视为UTC而不是本地时间。如果您将“09”而不是“9”,会发生什么?在第一个语句中,您的日期格式不正确,应该是“yyyy-mm-dd”而不是“yyyy-mm-d”,这就是造成问题的原因
new Date("2018-09-19").toISOString()