首页 > 代码库 > JavaScript如何计算两个日期间的时间差

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

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

01<script type="text/javascript">
02 
03/**
04* 时间对象的格式化;
05*/
06Date.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 
39function 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 
69var testDate = new Date();
70var testStr = testDate.format("yyyy-MM-dd hh:mm:ss");
71 
72var result = GetDateDiff("2010-02-26 16:00:00", testStr, "day");
73document.write("简明现代魔法 www.nowamagic.net 建站已有" + result + "天了。");
74//alert(result);
75</script>

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

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

计算秒数则可以这样:

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

实例程序的运行结果如下:广德县能源局

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

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