JavaScript版IsDate、DateAdd和DateDiff函数
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
VBScript的IsDate函数用于判断一个日期是否正确,JavaScript没有这个函数,我们也来写一个类似的函数。需要说明的是,JavaScript中IsDate的参数必须为字符串,且支持6种不同的格式"yyyy-mm-dd ││ yyyy/mm/dd ││ dd-mm-yyyy ││ dd/mm/yyyy ││ mm-dd-yyyy ││ mm/dd/yyyy",之所以不能使用日期作为参数是因为JavaScript根本没有不正确的日期,比如 new Date(2008,01,30),构造函数会自动将它转换成正确的日期2008-03-01。
JavaScript版IsDate函数如下:
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中有两个非常好用的日期操作函数:DateAdd用来给日期添加指定时间间隔,DateDiff用来返回两个日期的时间间隔。可惜的是JavaScript没有,不过我们可以写一个函数来实现,一样的,呵呵。 DateAdd函数: 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函数: 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 编辑过 |
关键字查询
相关文章
正在查询... |