JavaScript如何计算两个日期间的时间差

有时候我们需要知道两个日期之间差了多少天,多少小时,甚至多少分钟多少秒。下面我们用JavaScript实现一个函数,用于计算两个日期的时间差,先来看看代码:

01 <script type="text/javascript">
02  
03 /**
04 * 时间对象的格式化;
05 */
06 Date.prototype.format = function(format){
07  /*
08   * eg:format="YYYY-MM-dd hh:mm:ss";
09   */
10     var o = {
11         "M+" :  this.getMonth()+1,  //month
12         "d+" :  this.getDate(),     //day
13         "h+" :  this.getHours(),    //hour
14         "m+" :  this.getMinutes(),  //minute
15         "s+" :  this.getSeconds(), //second
16         "q+" :  Math.floor((this.getMonth()+3)/3),  //quarter
17         "S"  :  this.getMilliseconds() //millisecond
18     }
19    
20     if(/(y+)/.test(format)) {
21         format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
22     }
23   
24     for(var in o) {
25         if(new RegExp("("+ k +")").test(format)) {
26             format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
27         }
28     }
29     return format;
30 }
31  
32  
33 /*
34 * 获得时间差,时间格式为 年-月-日 小时:分钟:秒 或者 年/月/日 小时:分钟:秒
35 * 其中,年月日为全格式,例如 : 2010-10-12 01:00:00
36 * 返回精度为:秒,分,小时,天
37 */
38  
39 function GetDateDiff(startTime, endTime, diffType) {
40     //将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式
41     startTime = startTime.replace(/\-/g, "/");
42     endTime = endTime.replace(/\-/g, "/");
43  
44     //将计算间隔类性字符转换为小写
45     diffType = diffType.toLowerCase();
46     var sTime = new Date(startTime);      //开始时间
47     var eTime = new Date(endTime);  //结束时间
48     //作为除数的数字
49     var divNum = 1;
50     switch (diffType) {
51         case "second":
52             divNum = 1000;
53             break;
54         case "minute":
55             divNum = 1000 * 60;
56             break;
57         case "hour":
58             divNum = 1000 * 3600;
59             break;
60         case "day":
61             divNum = 1000 * 3600 * 24;
62             break;
63         default:
64             break;
65     }
66     return parseInt((eTime.getTime() - sTime.getTime()) / parseInt(divNum));
67 }
68  
69 var testDate = new Date();
70 var testStr = testDate.format("yyyy-MM-dd hh:mm:ss");
71  
72 var result = GetDateDiff("2010-02-26 16:00:00", testStr, "day");
73 document.write("简明现代魔法 www.nowamagic.net 建站已有" + result + "天了。");
74 //alert(result);
75 </script>

使用的方法很简单,比如计算天数可以这样:

1 GetDateDiff("2010-02-26 16:00:00""2011-07-02 21:48:40""day");

计算秒数则可以这样:

1 GetDateDiff("2010-02-26 16:00:00""2011-07-02 21:48:40""second");

实例程序的运行结果如下:

简明现代魔法 www.nowamagic.net 建站已有1695天了。

posted on 2014-10-19 14:15  复活的老羊  阅读(270)  评论(0编辑  收藏  举报

导航