javascript完美实现给定日期返回上月日期的方法
本文实例讲述了javascript完美实现给定日期返回上月日期的方法。分享给大家供大家参考,具体如下:
在项目开发中,使用javascript对日期进行处理时,因为在查询中都会有一个初始值,大多都会在当前日期的基础上推一个月,在这种情况下,如果自己写一个,需要考虑的情况较多,在这里给大家分享一下一个比较完善的解决这个问题的方法。供大家参考。例如:给定截止日期enddate=2010-07-31
计算得到开始日期startdate=2010-06-30
这个问题的关键在于对以下几处的考虑:
1、startdate跨年
2、startdate是2月(需考虑闰年的情况)
3、大小月
functiongetInitStartDate(enddate){ varcomp=enddate.split("-"); varyear=comp[0]; varmonth=comp[1]; vardate=comp[2]; if(month=="01"){//前一月跨年 month=12; year=year-1; }else{ month=month-1; if(month==2&&date>28){ date=isLeapYear(year)?29:28; }elseif(date==31){ switch(month){ case4: case6: case9: case11: date=30; break; default: break; } } } month=(""+month).length==1?("0"+month):(""+month); vardateFormat=year+"-"+month+"-"+date; returndateFormat; } functionisLeapYear(y){//判断y是否为闰年 return(y%4==0)&&(y%400==0||y%100!=0); } alert(getInitStartDate("2010-07-31"));
配套给出一个格式化日期的方法:
Date.prototype.format=function(format)//author:meizz { varo={ "M+":this.getMonth()+1,//month "d+":this.getDate(),//day "h+":this.getHours(),//hour "m+":this.getMinutes(),//minute "s+":this.getSeconds(),//second "q+":Math.floor((this.getMonth()+3)/3),//quarter "S":this.getMilliseconds()//millisecond } if(/(y+)/.test(format))format=format.replace(RegExp.$1, (this.getFullYear()+"").substr(4-RegExp.$1.length)); for(varkino)if(newRegExp("("+k+")").test(format)) format=format.replace(RegExp.$1, RegExp.$1.length==1?o[k]: ("00"+o[k]).substr((""+o[k]).length)); returnformat; } alert(newDate().format("yyyy-MM-dd")); alert(newDate("january12200811:12:30").format("yyyy-MM-ddhh:mm:ss"));
PS:这里再为大家推荐几款比较实用的天数计算在线工具供大家使用:
在线日期/天数计算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi
在线日期计算器/相差天数计算器:
http://tools.jb51.net/jisuanqi/datecalc
在线日期天数差计算器:
http://tools.jb51.net/jisuanqi/onlinedatejsq
在线天数计算器:
http://tools.jb51.net/jisuanqi/datejsq
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript时间与日期操作技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。