DateUtils.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. var DateUtils = {
  2. /**
  3. * 扩展Date 对象格式化方法
  4. */
  5. expandDate : function() {
  6. Date.prototype.format = function(fmt)
  7. { //author: meizz
  8. var o = {
  9. "M+" : this.getMonth()+1, //月份
  10. "d+" : this.getDate(), //日
  11. "h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12, //小时
  12. "H+" : this.getHours(), //小时
  13. "m+" : this.getMinutes(), //分
  14. "s+" : this.getSeconds(), //秒
  15. "q+" : Math.floor((this.getMonth()+3)/3), //季度
  16. "S" : this.getMilliseconds() //毫秒
  17. };
  18. if(/(y+)/.test(fmt))
  19. fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
  20. for(var k in o)
  21. if(new RegExp("("+ k +")").test(fmt))
  22. fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
  23. return fmt;
  24. }
  25. },
  26. /**
  27. * 获取具体年龄
  28. * @param {} beginStr
  29. * @param {} endStr
  30. * @return {}
  31. */
  32. getAgeInfo: function (beginStr, endStr) {
  33. var reg = new RegExp(/^(\d{1,4})(-|\/)(\d{1,2})(-|\/)(\d{1,2})(\s)(\d{1,2})(:)(\d{1,2})(:{0,1})(\d{0,2})$/);
  34. var beginArr = beginStr.match(reg);
  35. var endArr = endStr.match(reg);
  36. var days = 0;
  37. var month = 0;
  38. var year = 0;
  39. days = endArr[5] - beginArr[5];
  40. if (days < 0) {
  41. month = -1;
  42. days = 30 + days;
  43. }
  44. month = month + (endArr[3] - beginArr[3]);
  45. if (month < 0) {
  46. year = -1;
  47. month = 12 + month;
  48. }
  49. year = year + (endArr[1] - beginArr[1]);
  50. var yearString = year > 0 ? year + "岁" : "";
  51. var mnthString = month > 0 ? month + "月" : "";
  52. var dayString = days > 0 ? days + "天" : "";
  53. /*
  54. * 1 如果岁 大于等于1 那么年龄取 几岁 2 如果 岁等于0 但是月大于1 那么如果天等于0天小于3天 取小时 例如出生2天 就取 48小时
  55. */
  56. var result = "";
  57. if (year >= 1) {
  58. result = yearString + mnthString;
  59. } else {
  60. if (month >= 1) {
  61. result = days > 0 ? mnthString + dayString : mnthString;
  62. } else {
  63. var begDate = new Date(beginArr[1], beginArr[3] - 1, beginArr[5],
  64. beginArr[7], beginArr[9], beginArr[11]);
  65. var endDate = new Date(endArr[1], endArr[3] - 1, endArr[5],
  66. endArr[7], endArr[9], endArr[11]);
  67. var between = (endDate.getTime() - begDate.getTime()) / 1000;
  68. days = Math.floor(between / (24 * 3600));
  69. var hours = Math.floor(between / 3600 - (days * 24));
  70. var dayString = days > 0 ? days + "天" : "";
  71. result = days >= 3 ? dayString : days * 24 + hours + "小时";
  72. }
  73. }
  74. return result;
  75. },
  76. /**
  77. * 获取年龄,不满一天算天
  78. * @param {} birthday
  79. * @param {} today
  80. * @return {}
  81. */
  82. getAge :function(birthday,today) {
  83. var reg = new RegExp(/^(\d{1,4})(-|\/)(\d{1,2})(-|\/)(\d{1,2})$/);
  84. var beginArr = birthday.match(reg);
  85. var endArr = today.match(reg);
  86. var days = 0;
  87. var month = 0;
  88. var year = 0;
  89. days = endArr[5] - beginArr[5];
  90. if (days < 0) {
  91. month = -1;
  92. days = 30 + days;
  93. }
  94. month = month + (endArr[3] - beginArr[3]);
  95. if (month < 0) {
  96. year = -1;
  97. month = 12 + month;
  98. }
  99. year = year + (endArr[1] - beginArr[1]);
  100. var yearString = year > 0 ? year + "岁" : "";
  101. var mnthString = month > 0 ? month + "月" : "";
  102. var dayString = days > 0 ? days + "天" : "1天";
  103. /*
  104. * 1 如果岁 大于等于1 那么年龄取 几岁 2 如果 岁等于0 但是月大于1 name取几月 3 如果不足月, 则取天数 4 不满一天算一天
  105. */
  106. var result = "";
  107. if (year >= 1) {
  108. result = yearString + mnthString + dayString;
  109. } else {
  110. if (month >= 1) {
  111. result = days > 0 ? mnthString + dayString : mnthString;
  112. } else {
  113. result = dayString;
  114. }
  115. }
  116. return result;
  117. },
  118. /**
  119. * 获取月龄
  120. * @param {} birthday
  121. * @param {} today
  122. * @return {}
  123. */
  124. getMonthage :function(birthday,today) {
  125. var reg = new RegExp(/^(\d{1,4})(-|\/)(\d{1,2})(-|\/)(\d{1,2})$/);
  126. var beginArr = birthday.match(reg);
  127. var endArr = today.match(reg);
  128. var days = 0;
  129. var month = 0;
  130. var year = 0;
  131. days = endArr[5] - beginArr[5];
  132. if (days < 0) {
  133. month = -1;
  134. days = 30 + days;
  135. }
  136. month = month + (endArr[3] - beginArr[3]);
  137. if (month < 0) {
  138. year = -1;
  139. month = 12 + month;
  140. }
  141. year = year + (endArr[1] - beginArr[1]);
  142. var result = "";
  143. if (year >= 1) {
  144. result = (year * 12 + month + 1) + "个月";
  145. } else {
  146. if (month >= 1) {
  147. result = (month + 1) + "个月";
  148. } else {
  149. result = "1个月";
  150. }
  151. }
  152. return result;
  153. }
  154. }