JavaScript日期中“01”和“1”之间的差异

时间:2015-10-05 18:37:56

标签: javascript

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'

3 个答案:

答案 0 :(得分:22)

我在本地执行后看到的是

  • 本地时区的日期
  • 日期 UTC

根据MDN docsDate.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)

来自documentation

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可能会将其解释为除年,月和日之外的其他内容。