1、工作里遇到了计算两个日期的间隔天数问题,这个问题比较简单,只需要按照输入的日期,分别取出年月日,用new Date(year, month, date)的方法创建Date对象,直接对Date对象进行运算,可以得到两日期的间隔毫秒数,对之进行换算就可以得到天数了。
具体代码:
1 function showDays() { 2 var start_day = document.getElementById("date1").value.split("-");//起始日期 3 var end_day = document.getElementById("date2").value.split("-");//结束日期 4 console.log(start_day + " to " + end_day); 5 var start_obj = new Date(start_day[0], start_day[1] - 1, start_day[2]);//月份是从0开始计算,所以这里需要减一 6 var end_obj = new Date(end_day[0], end_day[1] - 1, end_day[2]); 7 console.log(start_obj + " to " + end_obj); 8 console.log((end_obj - start_obj) / (1000 * 3600 * 24)); 9 }
2、借此机会总结一下Date对象的特性和相关方法
1) Date对象的定义:
1 var date1 = new Date();//根据当前时间创建Date对象 2 var date2 = new Date(dateVal);//根据给定的毫秒数,从1970年1月1日开始计算日期,创建Date对象 3 var date3 = new Date(year, month, date[, hours[, minutes[, seconds[,ms]]]]);//根据给定的时间创建Date对象
要知道,Date对象存放时间的度量是毫秒,方式是以从1970年1月1日开始计算的毫秒数来表示特定的时间。
要注意用给定的时间来创建时间对象时,Date对象在月份的表示上是从0~11,所以要对月份减一。
2) Date对象的静态方法:
Date.parse():解析一个日期时间字符串,并返回1970/1/1午夜距离该日期时间的毫秒数。
Date.UTC():根据世界时返回1970年1月1日到指定日期的毫秒数,参数是按照指定格式的日期和时间。
简单的说,Date.perse()对于时间的解析和本地设置的时区有关,而且支持参数中出现月份的英文缩写和星期几的英文缩写,实际上,在调用Date()对象的构造方法时,会在后台先调用Date.parse()来解析传入的参数,也是说下面的代码是等价的:
1 var date1 = new Date("Oct, 12, 2015"); 2 var date2 = new Date(Date.parse("Oct, 12, 2015"));
而Date.TUC()也是返回毫秒数,但是Date.TUC()使用的参数不一样,Date.UTC()的参数分别是年份、从0开始算的月份(0到11)、日期(1到31)、小时数(0到23)、分钟、秒以及毫秒数,其中只有年和月是必须的。没有提供日期时,默认为1,其他的的参数没有提供时都默认为0。
3) Date对象的常用方法
比较常用的比如getDate(),getDay(),getMonth(),getFullYear()等等,需要注意的是月份和星期几都是从0开始的。