js 日期按年月日加减
<script> function isleapyear(year) { if(parseInt(year)%4==0 && parseInt(year)%100!=0)return true; if(parseInt(year)%400==0)return true; return false; } function datedrift(date,difference) { if(date.constructor!==Date)return Date(); var year=parseInt(date.getUTCFullYear()), mon=parseInt(date.getUTCMonth())+1, day=parseInt(date.getUTCDate()); if(typeof difference!="string" || difference.length==0)return date; var units=difference.match(/([+-]\d{1,3}[myd])/ig); for(var i=0;i<units.length;i++) { if(units[i].charAt(0)=='+') { var mark=units[i].substr(-1,1); var value=parseInt(units[i].substr(1,units[i].length-2)); if(mark =='y') { year=year+value; if(day==29) { year=year+value; if(mon==2) { if(!isleapyear(year)) day=28; } } } else if(mark == 'm') { year+=Math.floor((value+mon-1)/12); mon=(value+mon-1)%12+1; if(day==29 && mon==2 && !isleapyear(year))day=28; else if(day>=30 && mon==2) { if(isleapyear(year))day=29; else day=28; } else if(day==31 && (mon==4 || mon==6 || mon==9 || mon==11))day=30; } else if(mark== 'd') { var tmp=new Date(); tmp.setTime(Date.parse(year+'-'+mon+'-'+day)+value*24*36e5); year=tmp.getUTCFullYear(); mon=tmp.getUTCMonth()+1; day=tmp.getUTCDate(); } } else { var mark=units[i].substr(-1,1); var value=parseInt(units[i].substr(1,units[i].length-2)); switch(mark) { case "y": year-=value; if(day==29) { if(mon==2) { if(!isleapyear(year)) day=28; } } break; case "m": var minusyear=Math.floor(value/12); if(value%12>0) { year=year-minusyear-1; year+=Math.floor((mon+11-value%12)/12); mon=(mon+11-(value%12))%12+1; if(day==29 && mon==2 && !isleapyear(year))day=28; else if(day>=30 && mon==2) { if(isleapyear(year))day=29; else day=28; } else if(day==31 && (mon==4 || mon==6 || mon==9 || mon==11))day=30; } else { year=year-minusyear; if(day==29 && mon==2 && !isleapyear(year))day=28; else if(day>=30 && mon==2) { if(isleapyear(year))day=29; else day=28; } else if(day==31 && (mon==4 || mon==6 || mon==9 || mon==11))day=30; } break; case "d": var tmp=new Date(); tmp.setTime(Date.parse(year+'-'+mon+'-'+day)-value*24*36e5); year=tmp.getUTCFullYear(); mon=tmp.getUTCMonth()+1; day=tmp.getUTCDate(); break; } } } alert([year,mon,day]); } var curdate=new Date(); datedrift(curdate,"+5m -5m"); </script>
相信世界是平的
谨记四个字“修身养性”
大江东去浪淘尽英雄,再牛B的人物最后也是一掊土
向善不是目的,而是抚慰心灵,更多的感受幸福,感谢别人给你行善的机会
相信老子的话:万物生于有,有生于无,一切的道理都源于一个无法证明的假设
我是好是坏就自然而然的摆在那里,并不会因为别人的评价而改变什么,我也不需要别人用一张纸来说明我什么,世间最难得的是自由
谨记四个字“修身养性”
大江东去浪淘尽英雄,再牛B的人物最后也是一掊土
向善不是目的,而是抚慰心灵,更多的感受幸福,感谢别人给你行善的机会
相信老子的话:万物生于有,有生于无,一切的道理都源于一个无法证明的假设
我是好是坏就自然而然的摆在那里,并不会因为别人的评价而改变什么,我也不需要别人用一张纸来说明我什么,世间最难得的是自由
支持大额赞助:
![](https://images.cnblogs.com/cnblogs_com/sky-view/883309/o_%E6%97%A0%E6%A0%87%E9%A2%98.png)