首页 > 语言 > JavaScript > 正文

javascript实现日期按月份加减

2024-05-06 16:20:20
字体:大 中 小
来源:转载
供稿:网友

JavaScript实现日期加减计算功能代码实例,因为在js中没有类似C#中的AddDays方法,所以要想实现日期加减的话,就需要自己写函数来实现。这里分享给大家,有需要的小伙伴可以参考下

项目中需要用到,自己写了一个。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> 

方法二:

 

 
  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.addMonths= function(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> 

方法三:

 

 
  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> 

以上所述就是本文的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选