new Date()加引号和不加引号到底有什么区别?

我在做倒计时功能的时候发现了一个奇怪的问题:
看下面的这2个值,大家觉得打印出来的是什么?

    var endTime1 = new Date("2018,09,14"); 
    var endTime2 = new Date(2018,09,14);

依我之见,应该是:
Sun Oct 14 2018 00:00:00 GMT+0800 (中国标准时间)

看浏览器告诉我们的结果:
Fri Sep 14 2018 00:00:00 GMT+0800 (中国标准时间)
Sun Oct 14 2018 00:00:00 GMT+0800 (中国标准时间

搞笑哦.jpeg


new Date()加引号和不加引号到底有什么区别?

其实我们在写代码的时候,为了简化都是直接写:new Date(***)
它的原始方法是有2个:

  • Date.parse()
  • Date.UTC()。

Date.parse()的方法接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应日期的毫秒数。

var someDate = new Date(Date.parse("May 25,2004"))

等价于

var someDate = new Date("May 25,2004")

Date.UTC()方法同样也返回表示日期的毫秒数,但它与Date.parse()在构建值时使用不同的信息。
Date.UTC()的参数分别是年份、基于0的月份(一月是0,二月是1,以此类推)、月中的哪一天(1到31)、小时数(0到23)、分钟、秒以及毫秒数

var someDate = new Date(Date.UTC (2000,0))

等价于

var someDate = new Date(2000,0)

所以说:

    var endTime1 = new Date("2018,09,14"); 
    也就是
    var endTime1 = new Date(Date.parse("2018,09,14")); 
    //  Fri Sep 14 2018 00:00:00 GMT+0800 (中国标准时间) 
    //  正常月份    2018年9月14日
    var endTime2 = new Date(2018,09,14);
    也就是
    var endTime2 = new Date(Date.UTC(2018,09,14));
    //  Sun Oct 14 2018 00:00:00 GMT+0800 (中国标准时间) 
    //  你写出来的月份比实际月份多了一个月   2018年10月14日


 

发布了48 篇原创文章 · 获赞 12 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_40999917/article/details/103469785