javascript实现日期按月份加减

来源:互联网 发布:网络对大学生的影响 编辑:程序博客网 时间:2024/05/17 23:16

项目中需要用到,自己写了一个。javascript日期按月加减。

方法一:

  1. <!DOCTYPE html>  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4.   <meta charset="utf-8">  
  5.   <title></title>  
  6.   <script>  
  7.     function dateToDate(date) {  
  8.       var sDate = new Date();  
  9.       if (typeof date == 'object'  
  10.         && typeof new Date().getMonth == "function"  
  11.         ) {  
  12.         sDate = date;  
  13.       }  
  14.       else if (typeof date == "string") {  
  15.         var arr = date.split('-')  
  16.         if (arr.length == 3) {  
  17.           sDate = new Date(arr[0] + '-' + arr[1] + '-' + arr[2]);  
  18.         }  
  19.       }  
  20.    
  21.       return sDate;  
  22.     }  
  23.    
  24.    
  25.     function addMonth(date, num) {  
  26.       num = parseInt(num);  
  27.       var sDate = dateToDate(date);  
  28.    
  29.       var sYear = sDate.getFullYear();  
  30.       var sMonth = sDate.getMonth() + 1;  
  31.       var sDay = sDate.getDate();  
  32.    
  33.       var eYear = sYear;  
  34.       var eMonth = sMonth + num;  
  35.       var eDay = sDay;  
  36.       while (eMonth > 12) {  
  37.         eYear++;  
  38.         eMonth -12;  
  39.       }  
  40.    
  41.       var eDate = new Date(eYear, eMonth - 1, eDay);  
  42.    
  43.       while (eDate.getMonth() != eMonth - 1) {  
  44.         eDay--;  
  45.         eDate = new Date(eYear, eMonth - 1, eDay);  
  46.       }  
  47.    
  48.       return eDate;  
  49.     }  
  50.    
  51.     function calcDate() {  
  52.       var d = document.getElementById('date').value;  
  53.       var n = document.getElementById('num').value;  
  54.       var eDate = addMonth(d, n);  
  55.       document.getElementById('result').innerHTML = eDate.getFullYear() + '-' + (eDate.getMonth() + 1) + '-' + eDate.getDate();  
  56.     }  
  57.   </script>  
  58. </head>  
  59. <body>  
  60.   <input type="date" id="date" />  
  61.   <input type="number" id="num" value="1" />  
  62.   <input type="button" value="计算" onclick="calcDate()" />  
  63.   <div id="result"></div>  
  64. </body>  
  65. </html>  

方法二:

[html] view plain copy
  1. <script language="javascript">  
  2. Date.prototype.Format = function(fmt)   
  3. {  
  4. //代码作者: meizz   
  5. var o =  
  6. {   
  7. "M+" : this.getMonth() + 1, //月份   
  8. "d+" : this.getDate(), //日   
  9. "h+" : this.getHours(), //小时   
  10. "m+" : this.getMinutes(), //分   
  11. "s+" : this.getSeconds(), //秒   
  12. "q+" : Math.floor((this.getMonth() + 3) / 3), //季度   
  13. "S" : this.getMilliseconds() //毫秒   
  14. };   
  15. if (/(y+)/.test(fmt))   
  16. fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));   
  17. for (var k in o)   
  18. if (new RegExp("(" + k + ")").test(fmt))   
  19. fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));   
  20. return fmt;   
  21. }  
  22. Date.prototype.addDays = function(d)  
  23. {  
  24. this.setDate(this.getDate() + d);  
  25. };  
  26. Date.prototype.addWeeks = function(w)  
  27. {  
  28. this.addDays(w * 7);  
  29. };  
  30. Date.prototype.addMonthsfunction(m)  
  31. {  
  32. var d = this.getDate();  
  33. this.setMonth(this.getMonth() + m);  
  34. if (this.getDate() < d)  
  35. this.setDate(0);  
  36. };  
  37. Date.prototype.addYears = function(y)  
  38. {  
  39. var m = this.getMonth();  
  40. this.setFullYear(this.getFullYear() + y);  
  41. if (m < this.getMonth())   
  42. {  
  43. this.setDate(0);  
  44. }  
  45. };  
  46. </script>  

方法三:

[html] view plain copy
  1. <script>   
  2. function  DateAdd(interval,number,date)   
  3. {   
  4. /*   
  5.  *---------------  DateAdd(interval,number,date)  -----------------   
  6.  *  DateAdd(interval,number,date)    
  7.  *  功能:实现VBScript的DateAdd功能.   
  8.  *  参数:interval,字符串表达式,表示要添加的时间间隔.   
  9.  *  参数:number,数值表达式,表示要添加的时间间隔的个数.   
  10.  *  参数:date,时间对象.   
  11.  *  返回:新的时间对象.   
  12.  *  var  now  =  new  Date();   
  13.  *  var  newDate  =  DateAdd( "d ",5,now);   
  14.  *  author:wanghr100(灰豆宝宝.net)   
  15.  *  update:2004-5-28  11:46   
  16.  *---------------  DateAdd(interval,number,date)  -----------------   
  17.  */  
  18.     switch(interval)   
  19.     {   
  20.         case  "y "  :  {   
  21.             date.setFullYear(date.getFullYear()+number);   
  22.             return  date;   
  23.             break;   
  24.         }   
  25.         case  "q "  :  {   
  26.             date.setMonth(date.getMonth()+number*3);   
  27.             return  date;   
  28.             break;   
  29.         }   
  30.         case  "m "  :  {   
  31.             date.setMonth(date.getMonth()+number);  
  32.             return  date;   
  33.             break;   
  34.         }   
  35.         case  "w "  :  {   
  36.             date.setDate(date.getDate()+number*7);  
  37.             return  date;   
  38.             break;   
  39.         }   
  40.         case  "d "  :  {   
  41.             date.setDate(date.getDate()+number);   
  42.             return  date;   
  43.             break;   
  44.         }   
  45.         case  "h "  :  {   
  46.             date.setHours(date.getHours()+number);  
  47.             return  date;   
  48.             break;   
  49.         }   
  50.         case  "m "  :  {   
  51.             date.setMinutes(date.getMinutes()+number);   
  52.             return  date;   
  53.             break;   
  54.         }   
  55.         case  "s "  :  {   
  56.             date.setSeconds(date.getSeconds()+number);   
  57.             return  date;   
  58.             break;   
  59.         }   
  60.         default  :  {   
  61.             date.setDate(d.getDate()+number);   
  62.             return  date;   
  63.             break;   
  64.         }   
  65.     }   
  66. }  
  67. var  now  =  new  Date();   
  68. //加五天.   
  69. var  newDate  =  DateAdd( "d ",5,now);   
  70. alert(newDate.toLocaleDateString())   
  71. //加两个月.   
  72. newDate  =  DateAdd( "m ",2,now);   
  73. alert(newDate.toLocaleDateString())   
  74. //加一年   
  75. newDate  =  DateAdd( "y ",1,now);   
  76. alert(newDate.toLocaleDateString())   
  77. </script>  
原创粉丝点击