为什么这些日期不同?

时间:2016-08-22 08:18:54

标签: javascript date

控制台输出:

new Date(2016, 08, 22)
Thu Sep 22 2016 00:00:00 GMT+0200 (CEST)

new Date("2016, 08, 22")
Mon Aug 22 2016 00:00:00 GMT+0200 (CEST)

不同的月份但为什么?

2 个答案:

答案 0 :(得分:7)

Javascript月份在数字情况下为0,但在字符串中,解析08映射到August,因为它是标准日期格式的“August”的字符串转换。 正如DataExtension

所提及的那样,>> new Date(2016, 08, 22) >> Thu Sep 22 2016 00:00:00 GMT+0530 (IST) >> new Date(2016, 01, 22) >> Mon Feb 22 2016 00:00:00 GMT+0530 (IST) >> new Date(2016, 0, 22) >> Fri Jan 22 2016 00:00:00 GMT+0530 (IST) >> new Date("2016-08-22") >> Mon Aug 22 2016 05:30:00 GMT+0530 (IST) >> new Date("2016/08/22") >> Mon Aug 22 2016 00:00:00 GMT+0530 (IST) 被调用
  1. new Date();
  2. 新日期(价值);
  3. new Date(dateString);
  4. 新日期(年,月[,日[,小时[,分钟[,秒[,毫秒]]]]]);
  5. 在你的情况下,3&正在调用4种格式。

    {{1}}
    • @ RobG从评论中输入:
      

    ...完全解析ISO 8601扩展格式以外的字符串   依赖于实现。解析“2016,08,22”的结果可能是任何内容,包括无效的日期。

答案 1 :(得分:2)

您使用的第二个Date构造函数旨在解析日期的(已知)字符串表示形式,如"Dec 25, 1995"。您传入的格式不是标准格式,因此即使结果接近正确的日期(并且可以通过更正月份值来修复,如DhruvPathak所指出的),也不应该将其用作结果我的不同取决于在运行时/浏览器上。