有时候我们需要知道两个日期之间差了多少天,多少小时,甚至多少分钟多少秒。下面我们用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天了。