首页 > 语言 > JavaScript > 正文

js中日期的加减法

2024-05-06 16:19:26
字体:
来源:转载
供稿:网友

JavaScript实现日期加减计算功能代码实例,因为在js中没有类似C#中的AddDays方法,所以要想实现日期加减的话,就需要自己写函数来实现。

今天就算对JS中日期的加减法做个总结,一共两步

第一步,引入date.format.js,这个JS的作用是将日期转为指定的格式,代码如下

 

 
  1. var dateFormat = function () { 
  2. var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])/1?|[LloSZ]|"[^"]*"|'[^']*'/g, 
  3. timezone = //b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]/d{4})?)/b/g, 
  4. timezoneClip = /[^-+/dA-Z]/g, 
  5. pad = function (val, len) { 
  6. val = String(val); 
  7. len = len || 2; 
  8. while (val.length < len) val = "0" + val; 
  9. return val; 
  10. }; 
  11.  
  12. // Regexes and supporting functions are cached through closure 
  13. return function (date, mask, utc) { 
  14. var dF = dateFormat; 
  15.  
  16. // You can't provide utc if you skip other args (use the "UTC:" mask prefix) 
  17. if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !//d/.test(date)) { 
  18. mask = date; 
  19. date = undefined; 
  20.  
  21. // Passing date through Date applies Date.parse, if necessary 
  22. date = date ? new Date(date) : new Date; 
  23. if (isNaN(date)) throw SyntaxError("invalid date"); 
  24.  
  25. mask = String(dF.masks[mask] || mask || dF.masks["default"]); 
  26.  
  27. // Allow setting the utc argument via the mask 
  28. if (mask.slice(0, 4) == "UTC:") { 
  29. mask = mask.slice(4); 
  30. utc = true
  31.  
  32. var _ = utc ? "getUTC" : "get"
  33. d = date[_ + "Date"](), 
  34. D = date[_ + "Day"](), 
  35. m = date[_ + "Month"](), 
  36. y = date[_ + "FullYear"](), 
  37. H = date[_ + "Hours"](), 
  38. M = date[_ + "Minutes"](), 
  39. s = date[_ + "Seconds"](), 
  40. L = date[_ + "Milliseconds"](), 
  41. o = utc ? 0 : date.getTimezoneOffset(), 
  42. flags = { 
  43. d: d, 
  44. dd: pad(d), 
  45. ddd: dF.i18n.dayNames[D], 
  46. dddd: dF.i18n.dayNames[D + 7], 
  47. m: m + 1, 
  48. mm: pad(m + 1), 
  49. mmm: dF.i18n.monthNames[m], 
  50. mmmm: dF.i18n.monthNames[m + 12], 
  51. yy: String(y).slice(2), 
  52. yyyy: y, 
  53. h: H % 12 || 12, 
  54. hh: pad(H % 12 || 12), 
  55. H: H, 
  56. HH: pad(H), 
  57. M: M, 
  58. MM: pad(M), 
  59. s: s, 
  60. ss: pad(s), 
  61. l: pad(L, 3), 
  62. L: pad(L > 99 ? Math.round(L / 10) : L), 
  63. t: H < 12 ? "a" : "p"
  64. tt: H < 12 ? "am" : "pm"
  65. T: H < 12 ? "A" : "P"
  66. TT: H < 12 ? "AM" : "PM"
  67. Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""), 
  68. o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), 
  69. S: ["th""st""nd""rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10] 
  70. }; 
  71.  
  72. return mask.replace(token, function ($0) { 
  73. return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1); 
  74. }); 
  75. }; 
  76. }(); 
  77.  
  78. // Some common format strings 
  79. dateFormat.masks = { 
  80. "default""ddd mmm dd yyyy HH:MM:ss"
  81. shortDate: "m/d/yy"
  82. mediumDate: "mmm d, yyyy"
  83. longDate: "mmmm d, yyyy"
  84. fullDate: "dddd, mmmm d, yyyy"
  85. shortTime: "h:MM TT"
  86. mediumTime: "h:MM:ss TT"
  87. longTime: "h:MM:ss TT Z"
  88. isoDate: "yyyy-mm-dd"
  89. isoTime: "HH:MM:ss"
  90. isoDateTime: "yyyy-mm-dd'T'HH:MM:ss"
  91. isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'" 
  92. }; 
  93.  
  94. // Internationalization strings 
  95. dateFormat.i18n = { 
  96. dayNames: [ 
  97. "Sun""Mon""Tue""Wed""Thu""Fri""Sat"
  98. "Sunday""Monday""Tuesday""Wednesday""Thursday""Friday""Saturday" 
  99. ], 
  100. monthNames: [ 
  101. "Jan""Feb""Mar""Apr""May""Jun""Jul""Aug""Sep""Oct""Nov""Dec"
  102. "January""February""March""April""May""June""July""August""September""October""November""December" 
  103. }; 
  104.  
  105. // For convenience... 
  106. Date.prototype.format = function (mask, utc) { 
  107. return dateFormat(this, mask, utc); 
  108. }; 

第二步,将时间转换为毫秒进行加减计算,然后再用上面的js的转为指定的日期

 

 
  1. var nowDate = new Date(); 
  2. //加法操作 
  3. var ysDate = new Date(nowDate.getTime()-30*24*60*60*1000).format('yyyy-mm-dd'); 
  4. //减法操作 
  5. var yeDate = new Date(nowDate.getTime()-24*60*60*1000).format('yyyy-m-d'); 

通过以上两步就实现了,JS中日期的加减法,怎么样简单吧!快去试试!

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

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

图片精选