首页 > 语言 > 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. else if (typeof date == "string") { 
  14. var arr = date.split('-'
  15. if (arr.length == 3) { 
  16. sDate = new Date(arr[0] + '-' + arr[1] + '-' + arr[2]); 
  17.  
  18. return sDate; 
  19.  
  20.  
  21. function addMonth(date, num) { 
  22. num = parseInt(num); 
  23. var sDate = dateToDate(date); 
  24.  
  25. var sYear = sDate.getFullYear(); 
  26. var sMonth = sDate.getMonth() + 1; 
  27. var sDay = sDate.getDate(); 
  28.  
  29. var eYear = sYear; 
  30. var eMonth = sMonth + num; 
  31. var eDay = sDay; 
  32. while (eMonth > 12) { 
  33. eYear++; 
  34. eMonth -= 12; 
  35.  
  36. var eDate = new Date(eYear, eMonth - 1, eDay); 
  37.  
  38. while (eDate.getMonth() != eMonth - 1) { 
  39. eDay--; 
  40. eDate = new Date(eYear, eMonth - 1, eDay); 
  41.  
  42. return eDate; 
  43.  
  44. function calcDate() { 
  45. var d = document.getElementById('date').value; 
  46. var n = document.getElementById('num').value; 
  47. var eDate = addMonth(d, n); 
  48. document.getElementById('result').innerHTML = eDate.getFullYear() + '-' + (eDate.getMonth() + 1) + '-' + eDate.getDate(); 
  49. </script> 
  50. </head> 
  51. <body> 
  52. <input type="date" id="date" /> 
  53. <input type="number" id="num" value="1" /> 
  54. <input type="button" value="计算" onclick="calcDate()" /> 
  55. <div id="result"></div> 
  56. </body> 
  57. </html> 

方法二:

 

 
  1. <script language="javascript"
  2. Date.prototype.Format = function(fmt)  
  3. //代码作者: meizz  
  4. var o = 
  5. {  
  6. "M+" : this.getMonth() + 1, //月份  
  7. "d+" : this.getDate(), //日  
  8. "h+" : this.getHours(), //小时  
  9. "m+" : this.getMinutes(), //分  
  10. "s+" : this.getSeconds(), //秒  
  11. "q+" : Math.floor((this.getMonth() + 3) / 3), //季度  
  12. "S" : this.getMilliseconds() //毫秒  
  13. };  
  14. if (/(y+)/.test(fmt))  
  15. fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));  
  16. for (var k in o)  
  17. if (new RegExp("(" + k + ")").test(fmt))  
  18. fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));  
  19. return fmt;  
  20. Date.prototype.addDays = function(d) 
  21. this.setDate(this.getDate() + d); 
  22. }; 
  23. Date.prototype.addWeeks = function(w) 
  24. this.addDays(w * 7); 
  25. }; 
  26. Date.prototype.addMonths= function(m) 
  27. var d = this.getDate(); 
  28. this.setMonth(this.getMonth() + m); 
  29. if (this.getDate() < d) 
  30. this.setDate(0); 
  31. }; 
  32. Date.prototype.addYears = function(y) 
  33. var m = this.getMonth(); 
  34. this.setFullYear(this.getFullYear() + y); 
  35. if (m < this.getMonth())  
  36. this.setDate(0); 
  37. }; 
  38. </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. var now = new Date();  
  67. //加五天.  
  68. var newDate = DateAdd( "d ",5,now);  
  69. alert(newDate.toLocaleDateString())  
  70. //加两个月.  
  71. newDate = DateAdd( "m ",2,now);  
  72. alert(newDate.toLocaleDateString())  
  73. //加一年  
  74. newDate = DateAdd( "y ",1,now);  
  75. alert(newDate.toLocaleDateString())  
  76. </script> 

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

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

图片精选