JavaScript中2015-10-01'和'2015-10-1'的日期有什么区别?
new Date('2015-10-1')
这会返回'Thu Oct 01 2015 00:00:00 GMT-0300'
new Date('2015-10-01')
返回'Wed Sep 30 2015 21:00:00 GMT-0300'
答案 0 :(得分:22)
我在本地执行后看到的是
根据MDN docs,Date.parse
假定日期为UTC格式,如果它已完成DD
,则它将采用本地时区格式。
有关月份变化的详细说明:(评论)
执行此语句输出时 new Date('2015-10-1')
'Thu Oct 01 2015 00:00:00 GMT-0300'。即当地时间,格林威治标准时间-3小时。
但是当你执行new Date('2015-10-01')
输出'Wed Sep 30 2015 21:00:00 GMT-0300'时,它是UTC时间。即3小时减去您当地时间。
所以它是 10月1日午夜-3点,这是前一天的21小时。即9月30日21点。
答案 1 :(得分:6)
new Date(dateString)
<强> dateString 强>
表示RFC2822或ISO 8601日期的字符串(可能会使用其他格式,但结果可能会出乎意料)。
'2015-10-1'
既不是受支持的格式,也不会像您承诺的那样获得意外结果(而'2015-10-01'
是有效的ISO 8601日期)。
答案 2 :(得分:3)
这是因为JavaScript期望日期字符串中有一定数量的字符。
这里有两种格式:
(YYYY-MM-DD)
和
(YYYY-MM-D)
我很惊讶第二个回归任何东西,因为它似乎不适合任何有效的https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse。如果它按照你说的那样返回,那么JavaScript可能会将其解释为除年,月和日之外的其他内容。