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.

lr-date.js 11 KiB

4 years ago
4 years ago
4 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  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. ////上周的结束时间
  170. ////本周的开始时间
  171. ////本周的结束时间
  172. ////下周的开始时间
  173. ////下周结束时间
  174. getTime: function (n) {
  175. var now = new Date();
  176. var year = now.getFullYear();
  177. //因为月份是从0开始的,所以获取这个月的月份数要加1才行
  178. var month = now.getMonth() + 1;
  179. var date = now.getDate();
  180. var day = now.getDay();
  181. //判断是否为周日,如果不是的话,就让今天的day-1(例如星期二就是2-1)
  182. if (day !== 0) {
  183. n = n + (day - 1);
  184. } else {
  185. n = n + day;
  186. }
  187. if (day) {
  188. //这个判断是为了解决跨年的问题
  189. if (month > 1) {
  190. month = month;
  191. }
  192. //这个判断是为了解决跨年的问题,月份是从0开始的
  193. else {
  194. year = year - 1;
  195. month = 12;
  196. }
  197. }
  198. now.setDate(now.getDate() - n);
  199. year = now.getFullYear();
  200. month = now.getMonth() + 1;
  201. date = now.getDate();
  202. var s = year + "-" + (month < 10 ? ('0' + month) : month) + "-" + (date < 10 ? ('0' + date) : date);
  203. return s;
  204. }
  205. });
  206. //+---------------------------------------------------
  207. //| 日期计算
  208. //+---------------------------------------------------
  209. Date.prototype.DateAdd = function (strInterval, Number) {
  210. var dtTmp = this;
  211. switch (strInterval) {
  212. case 's': return new Date(Date.parse(dtTmp) + (1000 * Number));// 秒
  213. case 'n': return new Date(Date.parse(dtTmp) + (60000 * Number));// 分
  214. case 'h': return new Date(Date.parse(dtTmp) + (3600000 * Number));// 小时
  215. case 'd': return new Date(Date.parse(dtTmp) + (86400000 * Number));// 天
  216. case 'w': return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));// 星期
  217. case 'q': return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number * 3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());// 季度
  218. case 'm': return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());// 月
  219. case 'y': return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());// 年
  220. }
  221. }
  222. //+---------------------------------------------------
  223. //| 比较日期差 dtEnd 格式为日期型或者 有效日期格式字符串
  224. //+---------------------------------------------------
  225. Date.prototype.DateDiff = function (strInterval, dtEnd) {
  226. var dtStart = this;
  227. if (typeof dtEnd == 'string')//如果是字符串转换为日期型
  228. {
  229. dtEnd = learun.parseDate(dtEnd);
  230. }
  231. switch (strInterval) {
  232. case 's': return parseInt((dtEnd - dtStart) / 1000);
  233. case 'n': return parseInt((dtEnd - dtStart) / 60000);
  234. case 'h': return parseInt((dtEnd - dtStart) / 3600000);
  235. case 'd': return parseInt((dtEnd - dtStart) / 86400000);
  236. case 'w': return parseInt((dtEnd - dtStart) / (86400000 * 7));
  237. case 'm': return (dtEnd.getMonth() + 1) + ((dtEnd.getFullYear() - dtStart.getFullYear()) * 12) - (dtStart.getMonth() + 1);
  238. case 'y': return dtEnd.getFullYear() - dtStart.getFullYear();
  239. }
  240. }
  241. //+---------------------------------------------------
  242. //| 取得当前日期所在月的最大天数
  243. //+---------------------------------------------------
  244. Date.prototype.MaxDayOfDate = function () {
  245. var myDate = this;
  246. //var ary = myDate.toArray();
  247. //var date1 = (new Date(ary[0], ary[1] + 1, 1));
  248. //var date2 = date1.DateAdd('m', 1);
  249. //var result = dateDiff(date1.Format('yyyy-MM-dd'), date2.Format('yyyy-MM-dd'));
  250. var date1 = learun.parseDate(learun.formatDate(myDate, 'yyyy-MM-01 00:00:00'));
  251. var date2 = date1.DateAdd('m', 1);
  252. var result = date1.DateDiff('d', date2);
  253. return result;
  254. }
  255. //---------------------------------------------------
  256. // 判断闰年
  257. //---------------------------------------------------
  258. Date.prototype.isLeapYear = function () {
  259. return (0 == this.getYear() % 4 && ((this.getYear() % 100 != 0) || (this.getYear() % 400 == 0)));
  260. }
  261. })(jQuery, top.learun);