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 k 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天了。
浙公网安备 33010602011771号