原文传送门:http://blog.csdn.net/cuixiping/archive/2008/11/17/3322069.aspx
先贴出我写的javascript代码,后面有使用参考。
//by cuixiping, 2008-11-17
Date .prototype.dateAdd = function (interval,number)
{
var d = this ;
var k={ 'y' : 'FullYear' , 'q' : 'Month' , 'm' : 'Month' , 'w' : 'Date' , 'd' : 'Date' , 'h' : 'Hours' , 'n' : 'Minutes' , 's' : 'Seconds' , 'ms' : 'MilliSeconds' };
var n={ 'q' : 3 , 'w' : 7 };
eval( 'd.set' +k[interval]+ '(d.get' +k[interval]+ '()+' +((n[interval]|| 1 )*number)+ ')' );
return d;
}
Date .prototype.dateDiff = function (interval,objDate2)
{
var d= this , i={}, t=d.getTime(), t2=objDate2.getTime();
i[ 'y' ]=objDate2.getFullYear()-d.getFullYear();
i[ 'q' ]=i[ 'y' ]* 4 + Math .floor(objDate2.getMonth()/ 4 )- Math .floor(d.getMonth()/ 4 );
i[ 'm' ]=i[ 'y' ]* 12 +objDate2.getMonth()-d.getMonth();
i[ 'ms' ]=objDate2.getTime()-d.getTime();
i[ 'w' ]= Math .floor((t2+ 345600000 )/( 604800000 ))- Math .floor((t+ 345600000 )/( 604800000 ));
i[ 'd' ]= Math .floor(t2/ 86400000 )- Math .floor(t/ 86400000 );
i[ 'h' ]= Math .floor(t2/ 3600000 )- Math .floor(t/ 3600000 );
i[ 'n' ]= Math .floor(t2/ 60000 )- Math .floor(t/ 60000 );
i[ 's' ]= Math .floor(t2/ 1000 )- Math .floor(t/ 1000 );
return i[interval];
}
dateAdd 方法
返回已添加指定时间间隔的日期对象。
dateObj.dateAdd( interval, number)
参数
dateObj
必选项。任意 Date 对象。
interval
必选项。字符串表达式,表示要添加的时间间隔。有关数值,请参阅“设置”部分。
number
必选项。数值表达式,表示要添加的时间间隔的个数。数值表达式可以是正数(得到未来的日期)或负数(得到过去的日期)。
dateDiff 方法
返回两个日期对象之间的时间间隔。
dateObj.dateDiff( interval, dateObj2)
参数
interval
必选项。字符串表达式,表示用于计算 date1 和 date2 之间的时间间隔。有关数值,请参阅“设置”部分。
dateObj, dateObj2
必选项。日期对象。用于计算的两个日期对象。
设置
interval 参数可以有以下值:
设置 |
描述 |
y |
年 |
q |
季度 |
m |
月 |
d |
日 |
w |
周 |
h |
小时 |
n |
分钟 |
s |
秒 |
ms |
毫秒 |