Js计算间隔天数和Date对象

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开始的。

posted on 2015-08-24 00:25  小狒  阅读(1333)  评论(0编辑  收藏  举报

导航

18 til I die.