Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS日期到ISO字符串的奇怪行为_Javascript_Date - Fatal编程技术网

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()