JavaScript 模仿vbs中的 DateAdd() 函數(shù)的代碼
更新時間:2007年08月13日 19:50:05 作者:
項目中需要用到日歷,.net的日歷控件又太重,只好用js寫一個,日歷的核心函數(shù)是 DateAdd(),編寫過程中發(fā)現(xiàn) js 里面操作時間比想象中的繁瑣,不像vbscript中的可以輕松地dateadd,后來才想到用 setFullYear()、setDate()等內(nèi)置函數(shù),可以拼合一個js版的 dateadd() 來,代碼如下:
function DateAdd(interval,number,date){ // date 可以是時間對象也可以是字符串,如果是后者,形式必須為: yyyy-mm-dd hh:mm:ss 其中分隔符不定。"2006年12月29日 16點01分23秒" 也是合法的
number = parseInt(number);
if (typeof(date)=="string"){
date = date.split(/\D/);
--date[1];
eval("var date = new Date("+date.join(",")+")");
}
if (typeof(date)=="object"){
var date = date
}
switch(interval){
case "y": date.setFullYear(date.getFullYear()+number); break;
case "m": date.setMonth(date.getMonth()+number); break;
case "d": date.setDate(date.getDate()+number); break;
case "w": date.setDate(date.getDate()+7*number); break;
case "h": date.setHours(date.getHour()+number); break;
case "n": date.setMinutes(date.getMinutes()+number); break;
case "s": date.setSeconds(date.getSeconds()+number); break;
case "l": date.setMilliseconds(date.getMilliseconds()+number); break;
}
return date;
}
這個函數(shù)已經(jīng)盡量模仿 vbscript 中的 dateadd 函數(shù),三個參數(shù),第一個是變化的時間間隔,可以是年、月、日、周、時、分、秒、毫秒(擴展),第三個參數(shù)可以是時間對象,也可以是字符串(形式必須為:2006-12-29 14:32:57 或 2006年12月29日 14點32分57秒),函數(shù)的返回值是新的時間對象。
復制代碼 代碼如下:
function DateAdd(interval,number,date){ // date 可以是時間對象也可以是字符串,如果是后者,形式必須為: yyyy-mm-dd hh:mm:ss 其中分隔符不定。"2006年12月29日 16點01分23秒" 也是合法的
number = parseInt(number);
if (typeof(date)=="string"){
date = date.split(/\D/);
--date[1];
eval("var date = new Date("+date.join(",")+")");
}
if (typeof(date)=="object"){
var date = date
}
switch(interval){
case "y": date.setFullYear(date.getFullYear()+number); break;
case "m": date.setMonth(date.getMonth()+number); break;
case "d": date.setDate(date.getDate()+number); break;
case "w": date.setDate(date.getDate()+7*number); break;
case "h": date.setHours(date.getHour()+number); break;
case "n": date.setMinutes(date.getMinutes()+number); break;
case "s": date.setSeconds(date.getSeconds()+number); break;
case "l": date.setMilliseconds(date.getMilliseconds()+number); break;
}
return date;
}
這個函數(shù)已經(jīng)盡量模仿 vbscript 中的 dateadd 函數(shù),三個參數(shù),第一個是變化的時間間隔,可以是年、月、日、周、時、分、秒、毫秒(擴展),第三個參數(shù)可以是時間對象,也可以是字符串(形式必須為:2006-12-29 14:32:57 或 2006年12月29日 14點32分57秒),函數(shù)的返回值是新的時間對象。
相關文章
javascript 格式化時間日期函數(shù)代碼腳本之家修正版
javascript中,new Date()得到的是一個國際化時間格式的時間值 這在我們使用中文的時候,很不方便,也很難看所以就需要對javascript中的日期時間進行格式化.2009-12-12javascript日期轉(zhuǎn)換 時間戳轉(zhuǎn)日期格式
javascript日期轉(zhuǎn)換 時間戳轉(zhuǎn)日期格式實現(xiàn)代碼,需要的朋友可以參考下。2011-11-11JS中getYear()和getFullYear()區(qū)別分析
js中得到當前年份做法是var dayObj=new Date(); dayObj.getYear()來得到年份,我前面寫過這樣會出現(xiàn)瀏覽器的兼容性的問題,就是在IE中能得到我們想要的結(jié)果但是在FF中就不行了,和我們要的結(jié)果相差1900年2014-07-07