我在做倒计时功能的时候发现了一个奇怪的问题:
看下面的这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日