JavaScript版DateAdd和DateDiff函數(shù)代碼
更新時(shí)間:2012年03月01日 19:35:46 作者:
VBScript中有兩個(gè)非常好用的日期操作函數(shù):DateAdd用來(lái)給日期添加指定時(shí)間間隔,DateDiff用來(lái)返回兩個(gè)日期的時(shí)間間隔。可惜的是JavaScript沒(méi)有,不過(guò)我們可以寫(xiě)一個(gè)函數(shù)來(lái)實(shí)現(xiàn),一樣的,呵呵
DateAdd函數(shù):
復(fù)制代碼 代碼如下:
function DateAdd(interval,number,date){
switch(interval.toLowerCase()){
case "y": return new Date(date.setFullYear(date.getFullYear()+number));
case "m": return new Date(date.setMonth(date.getMonth()+number));
case "d": return new Date(date.setDate(date.getDate()+number));
case "w": return new Date(date.setDate(date.getDate()+7*number));
case "h": return new Date(date.setHours(date.getHours()+number));
case "n": return new Date(date.setMinutes(date.getMinutes()+number));
case "s": return new Date(date.setSeconds(date.getSeconds()+number));
case "l": return new Date(date.setMilliseconds(date.getMilliseconds()+number));
}
}
DateDiff函數(shù):
復(fù)制代碼 代碼如下:
function DateDiff(interval,date1,date2){
var long = date2.getTime() - date1.getTime(); //相差毫秒
switch(interval.toLowerCase()){
case "y": return parseInt(date2.getFullYear() - date1.getFullYear());
case "m": return parseInt((date2.getFullYear() - date1.getFullYear())*12 + (date2.getMonth()-date1.getMonth()));
case "d": return parseInt(long/1000/60/60/24);
case "w": return parseInt(long/1000/60/60/24/7);
case "h": return parseInt(long/1000/60/60);
case "n": return parseInt(long/1000/60);
case "s": return parseInt(long/1000);
case "l": return parseInt(long);
}
}
兼容多瀏覽器的datediff函數(shù)
復(fù)制代碼 代碼如下:
<script type="text/javascript">
function NewDate(str) {
str = str.split('-');
var date = new Date();
date.setUTCFullYear(str[0], str[1] - 1, str[2]);
date.setUTCHours(0, 0, 0, 0);
return date;
}
function TimeCom(dateValue) {
var newCom;
if (dateValue == "") {
newCom = new Date();
} else {
newCom = NewDate(dateValue);
}
this.year = newCom.getYear();
this.month = newCom.getMonth() + 1;
this.day = newCom.getDate();
this.hour = newCom.getHours();
this.minute = newCom.getMinutes();
this.second = newCom.getSeconds();
this.msecond = newCom.getMilliseconds();
this.week = newCom.getDay();
}
function DateDiff(interval, date1, date2) {
var TimeCom1 = new TimeCom(date1);
var TimeCom2 = new TimeCom(date2);
var result;
switch (String(interval).toLowerCase()) {
case "y":
case "year":
result = TimeCom1.year - TimeCom2.year;
break;
case "m":
case "month":
result = (TimeCom1.year - TimeCom2.year) * 12 + (TimeCom1.month - TimeCom2.month);
break;
case "d":
case "day":
result = Math.round((Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day)) / (1000 * 60 * 60 * 24));
break;
case "h":
case "hour":
result = Math.round((Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day, TimeCom1.hour) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day, TimeCom2.hour)) / (1000 * 60 * 60));
break;
case "min":
case "minute":
result = Math.round((Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day, TimeCom1.hour, TimeCom1.minute) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day, TimeCom2.hour, TimeCom2.minute)) / (1000 * 60));
break;
case "s":
case "second":
result = Math.round((Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day, TimeCom1.hour, TimeCom1.minute, TimeCom1.second) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day, TimeCom2.hour, TimeCom2.minute, TimeCom2.second)) / 1000);
break;
case "ms":
case "msecond":
result = Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day, TimeCom1.hour, TimeCom1.minute, TimeCom1.second, TimeCom1.msecond) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day, TimeCom2.hour, TimeCom2.minute, TimeCom2.second, TimeCom1.msecond);
break;
case "w":
case "week":
result = Math.round((Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day)) / (1000 * 60 * 60 * 24)) % 7;
break;
default:
result = "invalid";
}
return (result);
}
</script>
相關(guān)文章
JavaScript實(shí)現(xiàn)將圖片地址轉(zhuǎn)成文件流并上傳
這篇文章主要為大家詳細(xì)介紹了如何使用JavaScript實(shí)現(xiàn)將圖片地址轉(zhuǎn)成文件流并上傳,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04
js通過(guò)更改按鈕的顯示樣式實(shí)現(xiàn)按鈕的滑動(dòng)效果
使用js實(shí)現(xiàn)按鈕的滑動(dòng)效果,通過(guò)更改按鈕的顯示樣式,來(lái)實(shí)現(xiàn)按鈕動(dòng)態(tài)滑動(dòng),需要的朋友可以參考下2014-04-04
網(wǎng)頁(yè)自動(dòng)跳轉(zhuǎn)代碼收集
網(wǎng)頁(yè)自動(dòng)跳轉(zhuǎn)代碼收集2009-09-09
JavaScript使用指針操作實(shí)現(xiàn)約瑟夫問(wèn)題實(shí)例
這篇文章主要介紹了JavaScript使用指針操作實(shí)現(xiàn)約瑟夫問(wèn)題,實(shí)例分析了javascript模擬數(shù)組指針操作的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
總結(jié)Javascript中的隱式類(lèi)型轉(zhuǎn)換
這篇文章談?wù)凧avaScript的隱式類(lèi)型轉(zhuǎn)換,我們知道在JavaScript中聲明變量不需指定類(lèi)型, 對(duì)變量賦值也沒(méi)有類(lèi)型檢查,同時(shí)JavaScript允許隱式類(lèi)型轉(zhuǎn)換。這些特征說(shuō)明JavaScript屬于弱類(lèi)型的語(yǔ)言。2016-08-08
使用Javascript和DOM Interfaces來(lái)處理HTML
使用Javascript和DOM Interfaces來(lái)處理HTML...2006-10-10

