JavaScript版IsDate、DateAdd和DateDiff函數(shù)
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
VBScript的IsDate函數(shù)用于判斷一個日期是否正確,JavaScript沒有這個函數(shù),我們也來寫一個類似的函數(shù)。需要說明的是,JavaScript中IsDate的參數(shù)必須為字符串,且支持6種不同的格式"yyyy-mm-dd ││ yyyy/mm/dd ││ dd-mm-yyyy ││ dd/mm/yyyy ││ mm-dd-yyyy ││ mm/dd/yyyy",之所以不能使用日期作為參數(shù)是因為JavaScript根本沒有不正確的日期,比如 new Date(2008,01,30),構(gòu)造函數(shù)會自動將它轉(zhuǎn)換成正確的日期2008-03-01。
JavaScript版IsDate函數(shù)如下:
function IsDate(dateval){
var arr = new Array(); if(dateval.indexOf("-") != -1){ arr = dateval.toString().split("-"); }else if(dateval.indexOf("/") != -1){ arr = dateval.toString().split("/"); }else{ return false; } //yyyy-mm-dd ││ yyyy/mm/dd if(arr[0].length==4){ var date = new Date(arr[0],arr[1]-1,arr[2]); if(date.getFullYear()==arr[0] && date.getMonth()==arr[1]-1 && date.getDate()==arr[2]){ return true; } } //dd-mm-yyyy ││ dd/mm/yyyy if(arr[2].length==4){ var date = new Date(arr[2],arr[1]-1,arr[0]); if(date.getFullYear()==arr[2] && date.getMonth()==arr[1]-1 && date.getDate()==arr[0]){ return true; } } //mm-dd-yyyy ││ mm/dd/yyyy if(arr[2].length==4){ var date = new Date(arr[2],arr[0]-1,arr[1]); if(date.getFullYear()==arr[2] && date.getMonth()==arr[0]-1 && date.getDate()==arr[1]){ return true; } } return false; } VBScript中有兩個非常好用的日期操作函數(shù):DateAdd用來給日期添加指定時間間隔,DateDiff用來返回兩個日期的時間間隔??上У氖荍avaScript沒有,不過我們可以寫一個函數(shù)來實現(xiàn),一樣的,呵呵。 DateAdd函數(shù): function DateAdd(interval,number,date){
date = date.split(/\D/); //date格式為yyyy-mm-dd hh:mm:ss --date[1]; eval("var date = new Date("+date.join(",")+")"); 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ù): function DateDiff(interval,date1,date2){
date = date1.split(/\D/); --date[1]; eval("var date1 = new Date("+date.join(",")+")"); date = date2.split(/\D/); --date[1]; eval("var date2 = new Date("+date.join(",")+")"); 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); } } 該文章在 2011/3/11 14:50:54 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |