util.js 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. Date.prototype.format = function(formatStr) {
  2. var str = formatStr;
  3. var Week = ['日', '一', '二', '三', '四', '五', '六'];
  4. str = str.replace(/yyyy|YYYY/, this.getFullYear());
  5. str = str.replace(/yy|YY/, (this.getYear() % 100) > 9 ? (this.getYear() % 100).toString() : '0' + (this.getYear() % 100));
  6. str = str.replace(/MM/, this.getMonth() > 8 ? (this.getMonth() + 1).toString() : '0' + (this.getMonth() + 1));
  7. str = str.replace(/M/g, this.getMonth() + 1);
  8. str = str.replace(/w|W/g, Week[this.getDay()]);
  9. str = str.replace(/dd|DD/, this.getDate() > 9 ? this.getDate().toString() : '0' + this.getDate());
  10. str = str.replace(/d|D/g, this.getDate());
  11. str = str.replace(/hh|HH/, this.getHours() > 9 ? this.getHours().toString() : '0' + this.getHours());
  12. str = str.replace(/h|H/g, this.getHours());
  13. str = str.replace(/mm/, this.getMinutes() > 9 ? this.getMinutes().toString() : '0' + this.getMinutes());
  14. str = str.replace(/m/g, this.getMinutes());
  15. str = str.replace(/ss|SS/, this.getSeconds() > 9 ? this.getSeconds().toString() : '0' + this.getSeconds());
  16. str = str.replace(/s|S/g, this.getSeconds());
  17. return str;
  18. }
  19. function isMobilePhone(n) {
  20. var reg = /^1[34578]\d{9}$/
  21. return reg.test(n)
  22. }
  23. function isTelPhone(n) {
  24. var reg = /^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/
  25. return reg.test(n)
  26. }
  27. function getDateFromNow(days) {
  28. if(!days) {
  29. return new Date().format("yyyy-MM-dd")
  30. }
  31. var now = new Date().getTime()
  32. var diff = 24 * 3600 * 1000 * days
  33. return new Date(now + diff).format("yyyy-MM-dd")
  34. }
  35. function GetRequest() {
  36. var url = location.search; //获取url中"?"符后的字串
  37. var theRequest = new Object();
  38. if(url.indexOf("?") != -1) {
  39. var str = url.substr(1);
  40. strs = str.split("&");
  41. for(var i = 0; i < strs.length; i++) {
  42. theRequest[strs[i].split("=")[0]] = (strs[i].split("=")[1]);
  43. }
  44. }
  45. return theRequest;
  46. }
  47. //判断输入字符串是否为空或全是空格
  48. function isNull(str) {
  49. if(str == null) return true;
  50. if(str == "") return true;
  51. var regu = "^[ ]+$";
  52. var re = new RegExp(regu);
  53. var bb = re.test(str);
  54. return re.test(str);
  55. }
  56. /**
  57. * 获取本周、本季度、本月、上月的开端日期、停止日期
  58. */
  59. var now = new Date(); //当前日期
  60. var nowDayOfWeek = now.getDay(); //今天本周的第几天
  61. var nowDay = now.getDate(); //当前日
  62. var nowMonth = now.getMonth(); //当前月
  63. var nowYear = now.getYear(); //当前年
  64. nowYear += (nowYear < 2000) ? 1900 : 0; //
  65. nowYear = nowYear-1;//由于2018年没数据,故查询2017年数据(测试)
  66. var lastMonthDate = new Date(); //上月日期
  67. lastMonthDate.setDate(1);
  68. lastMonthDate.setMonth(lastMonthDate.getMonth() - 1);
  69. var lastYear = lastMonthDate.getYear();
  70. var lastMonth = lastMonthDate.getMonth();
  71. //格局化日期:yyyy-MM-dd
  72. function formatDate(date) {
  73. var myyear = date.getFullYear();
  74. var mymonth = date.getMonth() + 1;
  75. var myweekday = date.getDate();
  76. if(mymonth < 10) {
  77. mymonth = "0" + mymonth;
  78. }
  79. if(myweekday < 10) {
  80. myweekday = "0" + myweekday;
  81. }
  82. return(myyear + "-" + mymonth + "-" + myweekday);
  83. }
  84. //获得某月的天数
  85. function getMonthDays(myMonth) {
  86. var monthStartDate = new Date(nowYear, myMonth, 1);
  87. var monthEndDate = new Date(nowYear, myMonth + 1, 1);
  88. var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24);
  89. return days;
  90. }
  91. //获得本季度的开端月份
  92. function getQuarterStartMonth() {
  93. var quarterStartMonth = 0;
  94. if(nowMonth < 3) {
  95. quarterStartMonth = 0;
  96. }
  97. if(2 < nowMonth && nowMonth < 6) {
  98. quarterStartMonth = 3;
  99. }
  100. if(5 < nowMonth && nowMonth < 9) {
  101. quarterStartMonth = 6;
  102. }
  103. if(nowMonth > 8) {
  104. quarterStartMonth = 9;
  105. }
  106. return quarterStartMonth;
  107. }
  108. //获得本周的开端日期
  109. function getWeekStartDate() {
  110. var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);
  111. return formatDate(weekStartDate);
  112. }
  113. //获得本周的停止日期
  114. function getWeekEndDate() {
  115. var weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek));
  116. return formatDate(weekEndDate);
  117. }
  118. //获得本月的开端日期
  119. function getMonthStartDate() {
  120. var monthStartDate = new Date(nowYear, nowMonth, 1);
  121. return formatDate(monthStartDate);
  122. }
  123. //获得本月的停止日期
  124. function getMonthEndDate() {
  125. var monthEndDate = new Date(nowYear, nowMonth, getMonthDays(nowMonth));
  126. return formatDate(monthEndDate);
  127. }
  128. //获得上月开端时候
  129. function getLastMonthStartDate() {
  130. var lastMonthStartDate = new Date(nowYear, lastMonth, 1);
  131. return formatDate(lastMonthStartDate);
  132. }
  133. //获得上月停止时候
  134. function getLastMonthEndDate() {
  135. var lastMonthEndDate = new Date(nowYear, lastMonth, getMonthDays(lastMonth));
  136. return formatDate(lastMonthEndDate);
  137. }
  138. //获得本季度的开端日期
  139. function getQuarterStartDate() {
  140. var quarterStartDate = new Date(nowYear, getQuarterStartMonth(), 1);
  141. return formatDate(quarterStartDate);
  142. }
  143. //或的本季度的停止日期
  144. function getQuarterEndDate() {
  145. var quarterEndMonth = getQuarterStartMonth() + 2;
  146. var quarterStartDate = new Date(nowYear, quarterEndMonth, getMonthDays(quarterEndMonth));
  147. return formatDate(quarterStartDate);
  148. }
  149. //获得本年的开始日期
  150. function getYearStartDate() {
  151. //本年第一天
  152. var currentYearFirstDate=new Date(nowYear,0,1);
  153. return formatDate(currentYearFirstDate);
  154. }
  155. //获得本年的结束日期
  156. function getYearEndDate() {
  157. //本年最后
  158. var currentYearLastDate=new Date(nowYear,11,31);
  159. return formatDate(currentYearLastDate);
  160. }
  161. //获得昨天日期
  162. function getYearEndDate() {
  163. return getYesterday(-1, '-');
  164. }
  165. //近半年开始时间
  166. function getHalfYearStartDate(){
  167. var date = new Date();
  168. date.setMonth(date.getMonth() - 6);
  169. var year = nowYear;
  170. var month = date.getMonth() + 1;
  171. month = (month < 10 ? "0" + month : month);
  172. return year.toString() + '-' + month.toString() + "-01";
  173. }
  174. //近半年结束时间
  175. function getHalfYearEndDate(){
  176. var date = new Date();
  177. var currentMonth = date.getMonth();
  178. var nextMonth = ++currentMonth;
  179. var nextMonthFirstDay = new Date(nowYear, nextMonth-1, 1);
  180. var oneDay = 1000 * 60 * 60 * 24;
  181. return(new Date(nextMonthFirstDay - oneDay)).format("yyyy-MM-dd");
  182. }
  183. //获取过去12个月时间
  184. function getLastYearMonthArray(){
  185. var dataArr = [],day,month;
  186. var data=new Date();
  187. var year=data.getFullYear()-1;
  188. data.setMonth(data.getMonth()+1)//获取到当前月份,设置月份
  189. for (var i = 0; i < 12; i++) {
  190. data.setMonth(data.getMonth()-1);//每次循环一次 月份值减1
  191. month = (data.getMonth()+1)<10?"0"+(data.getMonth()+1):data.getMonth()+1;
  192. if(i==11){//过去第12个月
  193. dataArr.push(data.getFullYear()+"-"+month+"-01")
  194. }else if(i==0){//本月
  195. var day = getDaysInMonth(data.getFullYear(),data.getMonth()+1);
  196. dataArr.push(data.getFullYear()+"-"+month+"-"+day)
  197. }else{
  198. dataArr.push(data.getFullYear()+"-"+month)
  199. }
  200. }
  201. return dataArr;
  202. }
  203. //根据年月实现获得当月天数
  204. function getDaysInMonth(year,month){
  205. month = parseInt(month,10); //parseInt(number,type)这个函数后面如果不跟第2个参数来表示进制的话,默认是10进制。
  206. var temp = new Date(year,month,0);
  207. return temp.getDate();
  208. }
  209. //获取昨天日期
  210. function getYesterday(num, str){
  211. var today = new Date();
  212. var nowTime = today.getTime();
  213. var ms = 24*3600*1000*num;
  214. today.setTime(parseInt(nowTime + ms));
  215. var oYear = nowYear;
  216. var oMoth = (today.getMonth() + 1).toString();
  217. if (oMoth.length <= 1) oMoth = '0' + oMoth;
  218. var oDay = today.getDate().toString();
  219. if (oDay.length <= 1) oDay = '0' + oDay;
  220. return oYear + str + oMoth + str + oDay;
  221. }
  222. //获取过去6个月的开始时间
  223. function getLastHalfMonthArray(dateStr){//格式:2018-07
  224. var dataArr = [],day,month,halfDate;
  225. var data=new Date();
  226. var year=dateStr.substring(0,4);
  227. data.setMonth(parseInt(dateStr.substring(5,7)))//获取到当前月份,设置月份
  228. data.setMonth(data.getMonth()-6);//往前推半年,月份值减6
  229. month = (data.getMonth()+1)<10?"0"+(data.getMonth()+1):data.getMonth()+1;
  230. halfDate = data.getFullYear()+"-"+month+"-01"
  231. return halfDate;
  232. }