You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

272 lines
11 KiB

  1. /*
  2. * 版 本 ADMS V2 Learun智慧校园 敏捷开发框架
  3. * Copyright (c) 2013-2018 北京泉江科技有限公司
  4. * 创建人:Learun智慧校园-前 端 开 发 组
  5. * 日 期:2017.03.16
  6. * 描 述:时间日期的处理
  7. */
  8. (function ($, learun) {
  9. "use strict";
  10. $.extend(learun, {
  11. // 字串转化成日期
  12. parseDate: function (strDate) {
  13. var myDate;
  14. if (strDate.indexOf("/Date(") > -1)
  15. myDate = new Date(parseInt(strDate.replace("/Date(", "").replace(")/", ""), 10));
  16. else
  17. myDate = new Date(Date.parse(strDate.replace(/-/g, "/").replace("T", " ").split(".")[0]));//.split(".")[0] 用来处理出现毫秒的情况,截取掉.xxx,否则会出错
  18. return myDate;
  19. },
  20. // 日期格式化v日期,format:格式
  21. formatDate: function (v, format) {
  22. if (!v) return "";
  23. var d = v;
  24. if (typeof v === 'string') {
  25. if (v.indexOf("/Date(") > -1)
  26. d = new Date(parseInt(v.replace("/Date(", "").replace(")/", ""), 10));
  27. else
  28. d = new Date(Date.parse(v.replace(/-/g, "/").replace("T", " ").split(".")[0]));//.split(".")[0] 用来处理出现毫秒的情况,截取掉.xxx,否则会出错
  29. }
  30. var o = {
  31. "M+": d.getMonth() + 1, //month
  32. "d+": d.getDate(), //day
  33. "h+": d.getHours(), //hour
  34. "m+": d.getMinutes(), //minute
  35. "s+": d.getSeconds(), //second
  36. "q+": Math.floor((d.getMonth() + 3) / 3), //quarter
  37. "S": d.getMilliseconds() //millisecond
  38. };
  39. if (/(y+)/.test(format)) {
  40. format = format.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length));
  41. }
  42. for (var k in o) {
  43. if (new RegExp("(" + k + ")").test(format)) {
  44. format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
  45. }
  46. }
  47. return format;
  48. },
  49. // 获取当前时间;format为格式
  50. getDate: function (format, strInterval, Number) {
  51. var myDate = new Date();
  52. if (!!strInterval) {
  53. myDate = myDate.DateAdd(strInterval, Number);
  54. }
  55. var res = learun.formatDate(myDate, format);
  56. return res;
  57. },
  58. // 月
  59. getMonth: function () {
  60. var res = {
  61. begin: '',
  62. end: ''
  63. };
  64. var currentDate = learun.parseDate(learun.formatDate(new Date(), "yyyy-MM-01"));
  65. var endDate = currentDate.DateAdd('m', 1).DateAdd('d', -1);
  66. res.begin = learun.formatDate(currentDate, 'yyyy-MM-dd 00:00:00');
  67. res.end = learun.formatDate(endDate, 'yyyy-MM-dd 23:59:59');
  68. return res;
  69. },
  70. getPreMonth: function () {
  71. var res = {
  72. begin: '',
  73. end: ''
  74. };
  75. var currentDate = learun.parseDate(learun.formatDate(new Date(), "yyyy-MM-01"));
  76. var preMonth = currentDate.DateAdd('d', -1);
  77. res.begin = learun.formatDate(preMonth, 'yyyy-MM-01 00:00:00');
  78. res.end = learun.formatDate(preMonth, 'yyyy-MM-dd 23:59:59');
  79. return res;
  80. },
  81. // 季度
  82. getCurrentQuarter: function () {
  83. var currentDate = new Date();
  84. return learun.getQuarter(currentDate.getFullYear(), currentDate.getMonth());
  85. },
  86. getPreQuarter: function () {
  87. var currentDate = new Date().DateAdd('q', -1);
  88. return learun.getQuarter(currentDate.getFullYear(), currentDate.getMonth());
  89. },
  90. getQuarter: function (Year, month) {
  91. var res = {
  92. begin: '',
  93. end: ''
  94. };
  95. switch (month) {
  96. case 0:
  97. case 1:
  98. case 2:
  99. res.begin = Year + "-01-01 00:00:00";
  100. res.end = Year + "-03-31 23:59:59";
  101. break;
  102. case 3:
  103. case 4:
  104. case 5:
  105. res.begin = Year + "-04-01 00:00:00";
  106. res.end = Year + "-06-30 23:59:59";
  107. break;
  108. case 6:
  109. case 7:
  110. case 8:
  111. res.begin = Year + "-07-01 00:00:00";
  112. res.end = Year + "-09-30 23:59:59";
  113. break;
  114. case 9:
  115. case 10:
  116. case 11:
  117. res.begin = Year + "-10-01 00:00:00";
  118. res.end = Year + "-12-31 23:59:59";
  119. break;
  120. }
  121. return res;
  122. },
  123. // 年
  124. getYear: function () {
  125. var currentDate = new Date();
  126. var res = {
  127. begin: '',
  128. end: ''
  129. };
  130. var year = currentDate.getFullYear();
  131. res.begin = year + '-01-01 00:00:00';
  132. res.end = year + '-12-31 23:59:59';
  133. return res;
  134. },
  135. getPreYear: function () {
  136. var currentDate = new Date();
  137. var res = {
  138. begin: '',
  139. end: ''
  140. };
  141. var year = currentDate.getFullYear() - 1;
  142. res.begin = year + '-01-01 00:00:00';
  143. res.end = year + '-12-31 23:59:59';
  144. return res;
  145. },
  146. getFirstHalfYear: function () {
  147. var currentDate = new Date();
  148. var res = {
  149. begin: '',
  150. end: ''
  151. };
  152. var year = currentDate.getFullYear();
  153. res.begin = year + '-01-01 00:00:00';
  154. res.end = year + '-06-30 23:59:59';
  155. return res;
  156. },
  157. getSecondHalfYear: function () {
  158. var currentDate = new Date();
  159. var res = {
  160. begin: '',
  161. end: ''
  162. };
  163. var year = currentDate.getFullYear();
  164. res.begin = year + '-07-01 00:00:00';
  165. res.end = year + '-12-31 23:59:59';
  166. return res;
  167. },
  168. ////上周的开始时间
  169. //console.log(getTime(7));
  170. ////上周的结束时间
  171. //console.log(getTime(1));
  172. ////本周的开始时间
  173. //console.log(getTime(0));
  174. ////本周的结束时间
  175. //console.log(getTime(-6));
  176. ////下周的开始时间
  177. //console.log(getTime(-7));
  178. ////下周结束时间
  179. //console.log(getTime(-13));
  180. getTime: function (n) {
  181. var now = new Date();
  182. var year = now.getFullYear();
  183. //因为月份是从0开始的,所以获取这个月的月份数要加1才行
  184. var month = now.getMonth() + 1;
  185. var date = now.getDate();
  186. var day = now.getDay();
  187. //判断是否为周日,如果不是的话,就让今天的day-1(例如星期二就是2-1)
  188. if (day !== 0) {
  189. n = n + (day - 1);
  190. } else {
  191. n = n + day;
  192. }
  193. if (day) {
  194. //这个判断是为了解决跨年的问题
  195. if (month > 1) {
  196. month = month;
  197. }
  198. //这个判断是为了解决跨年的问题,月份是从0开始的
  199. else {
  200. year = year - 1;
  201. month = 12;
  202. }
  203. }
  204. now.setDate(now.getDate() - n);
  205. year = now.getFullYear();
  206. month = now.getMonth() + 1;
  207. date = now.getDate();
  208. var s = year + "-" + (month < 10 ? ('0' + month) : month) + "-" + (date < 10 ? ('0' + date) : date);
  209. return s;
  210. }
  211. });
  212. //+---------------------------------------------------
  213. //| 日期计算
  214. //+---------------------------------------------------
  215. Date.prototype.DateAdd = function (strInterval, Number) {
  216. var dtTmp = this;
  217. switch (strInterval) {
  218. case 's': return new Date(Date.parse(dtTmp) + (1000 * Number));// 秒
  219. case 'n': return new Date(Date.parse(dtTmp) + (60000 * Number));// 分
  220. case 'h': return new Date(Date.parse(dtTmp) + (3600000 * Number));// 小时
  221. case 'd': return new Date(Date.parse(dtTmp) + (86400000 * Number));// 天
  222. case 'w': return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));// 星期
  223. case 'q': return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number * 3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());// 季度
  224. case 'm': return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());// 月
  225. case 'y': return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());// 年
  226. }
  227. }
  228. //+---------------------------------------------------
  229. //| 比较日期差 dtEnd 格式为日期型或者 有效日期格式字符串
  230. //+---------------------------------------------------
  231. Date.prototype.DateDiff = function (strInterval, dtEnd) {
  232. var dtStart = this;
  233. if (typeof dtEnd == 'string')//如果是字符串转换为日期型
  234. {
  235. dtEnd = learun.parseDate(dtEnd);
  236. }
  237. switch (strInterval) {
  238. case 's': return parseInt((dtEnd - dtStart) / 1000);
  239. case 'n': return parseInt((dtEnd - dtStart) / 60000);
  240. case 'h': return parseInt((dtEnd - dtStart) / 3600000);
  241. case 'd': return parseInt((dtEnd - dtStart) / 86400000);
  242. case 'w': return parseInt((dtEnd - dtStart) / (86400000 * 7));
  243. case 'm': return (dtEnd.getMonth() + 1) + ((dtEnd.getFullYear() - dtStart.getFullYear()) * 12) - (dtStart.getMonth() + 1);
  244. case 'y': return dtEnd.getFullYear() - dtStart.getFullYear();
  245. }
  246. }
  247. //+---------------------------------------------------
  248. //| 取得当前日期所在月的最大天数
  249. //+---------------------------------------------------
  250. Date.prototype.MaxDayOfDate = function () {
  251. var myDate = this;
  252. var ary = myDate.toArray();
  253. var date1 = (new Date(ary[0], ary[1] + 1, 1));
  254. var date2 = date1.DateAdd('m', 1);
  255. var result = dateDiff(date1.Format('yyyy-MM-dd'), date2.Format('yyyy-MM-dd'));
  256. return result;
  257. }
  258. //---------------------------------------------------
  259. // 判断闰年
  260. //---------------------------------------------------
  261. Date.prototype.isLeapYear = function () {
  262. return (0 == this.getYear() % 4 && ((this.getYear() % 100 != 0) || (this.getYear() % 400 == 0)));
  263. }
  264. })(jQuery, top.learun);