|
- /*
- * 版 本 ADMS V2 Learun智慧校园 敏捷开发框架
- * Copyright (c) 2013-2018 北京泉江科技有限公司
- * 创建人:Learun智慧校园-前 端 开 发 组
- * 日 期:2017.03.16
- * 描 述:时间日期的处理
- */
- (function ($, learun) {
- "use strict";
- $.extend(learun, {
- // 字串转化成日期
- parseDate: function (strDate) {
- var myDate;
- if (strDate.indexOf("/Date(") > -1)
- myDate = new Date(parseInt(strDate.replace("/Date(", "").replace(")/", ""), 10));
- else
- myDate = new Date(Date.parse(strDate.replace(/-/g, "/").replace("T", " ").split(".")[0]));//.split(".")[0] 用来处理出现毫秒的情况,截取掉.xxx,否则会出错
- return myDate;
- },
- // 日期格式化v日期,format:格式
- formatDate: function (v, format) {
- if (!v) return "";
- var d = v;
- if (typeof v === 'string') {
- if (v.indexOf("/Date(") > -1)
- d = new Date(parseInt(v.replace("/Date(", "").replace(")/", ""), 10));
- else
- d = new Date(Date.parse(v.replace(/-/g, "/").replace("T", " ").split(".")[0]));//.split(".")[0] 用来处理出现毫秒的情况,截取掉.xxx,否则会出错
- }
- var o = {
- "M+": d.getMonth() + 1, //month
- "d+": d.getDate(), //day
- "h+": d.getHours(), //hour
- "m+": d.getMinutes(), //minute
- "s+": d.getSeconds(), //second
- "q+": Math.floor((d.getMonth() + 3) / 3), //quarter
- "S": d.getMilliseconds() //millisecond
- };
- if (/(y+)/.test(format)) {
- format = format.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length));
- }
- for (var k in o) {
- if (new RegExp("(" + k + ")").test(format)) {
- format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
- }
- }
- return format;
- },
- // 获取当前时间;format为格式
- getDate: function (format, strInterval, Number) {
- var myDate = new Date();
- if (!!strInterval) {
- myDate = myDate.DateAdd(strInterval, Number);
- }
- var res = learun.formatDate(myDate, format);
- return res;
- },
- // 月
- getMonth: function () {
- var res = {
- begin: '',
- end: ''
- };
- var currentDate = learun.parseDate(learun.formatDate(new Date(), "yyyy-MM-01"));
- var endDate = currentDate.DateAdd('m', 1).DateAdd('d', -1);
-
- res.begin = learun.formatDate(currentDate, 'yyyy-MM-dd 00:00:00');
- res.end = learun.formatDate(endDate, 'yyyy-MM-dd 23:59:59');
-
- return res;
- },
- getPreMonth: function () {
- var res = {
- begin: '',
- end: ''
- };
- var currentDate = learun.parseDate(learun.formatDate(new Date(), "yyyy-MM-01"));
- var preMonth = currentDate.DateAdd('d', -1);
-
- res.begin = learun.formatDate(preMonth, 'yyyy-MM-01 00:00:00');
- res.end = learun.formatDate(preMonth, 'yyyy-MM-dd 23:59:59');
-
- return res;
- },
- // 季度
- getCurrentQuarter: function () {
- var currentDate = new Date();
- return learun.getQuarter(currentDate.getFullYear(), currentDate.getMonth());
- },
- getPreQuarter: function () {
- var currentDate = new Date().DateAdd('q', -1);
- return learun.getQuarter(currentDate.getFullYear(), currentDate.getMonth());
- },
- getQuarter: function (Year, month) {
- var res = {
- begin: '',
- end: ''
- };
- switch (month) {
- case 0:
- case 1:
- case 2:
- res.begin = Year + "-01-01 00:00:00";
- res.end = Year + "-03-31 23:59:59";
- break;
- case 3:
- case 4:
- case 5:
- res.begin = Year + "-04-01 00:00:00";
- res.end = Year + "-06-30 23:59:59";
- break;
- case 6:
- case 7:
- case 8:
- res.begin = Year + "-07-01 00:00:00";
- res.end = Year + "-09-30 23:59:59";
- break;
- case 9:
- case 10:
- case 11:
- res.begin = Year + "-10-01 00:00:00";
- res.end = Year + "-12-31 23:59:59";
- break;
- }
- return res;
- },
- // 年
- getYear: function () {
- var currentDate = new Date();
- var res = {
- begin: '',
- end: ''
- };
- var year = currentDate.getFullYear();
- res.begin = year + '-01-01 00:00:00';
- res.end = year + '-12-31 23:59:59';
- return res;
- },
- getPreYear: function () {
- var currentDate = new Date();
- var res = {
- begin: '',
- end: ''
- };
- var year = currentDate.getFullYear() - 1;
- res.begin = year + '-01-01 00:00:00';
- res.end = year + '-12-31 23:59:59';
- return res;
- },
- getFirstHalfYear: function () {
- var currentDate = new Date();
- var res = {
- begin: '',
- end: ''
- };
- var year = currentDate.getFullYear();
- res.begin = year + '-01-01 00:00:00';
- res.end = year + '-06-30 23:59:59';
- return res;
- },
- getSecondHalfYear: function () {
- var currentDate = new Date();
- var res = {
- begin: '',
- end: ''
- };
- var year = currentDate.getFullYear();
- res.begin = year + '-07-01 00:00:00';
- res.end = year + '-12-31 23:59:59';
- return res;
- },
- ////上周的开始时间
- ////上周的结束时间
- ////本周的开始时间
- ////本周的结束时间
- ////下周的开始时间
- ////下周结束时间
- getTime: function (n) {
- var now = new Date();
- var year = now.getFullYear();
- //因为月份是从0开始的,所以获取这个月的月份数要加1才行
- var month = now.getMonth() + 1;
- var date = now.getDate();
- var day = now.getDay();
- //判断是否为周日,如果不是的话,就让今天的day-1(例如星期二就是2-1)
- if (day !== 0) {
- n = n + (day - 1);
- } else {
- n = n + day;
- }
- if (day) {
- //这个判断是为了解决跨年的问题
- if (month > 1) {
- month = month;
- }
- //这个判断是为了解决跨年的问题,月份是从0开始的
- else {
- year = year - 1;
- month = 12;
- }
- }
- now.setDate(now.getDate() - n);
- year = now.getFullYear();
- month = now.getMonth() + 1;
- date = now.getDate();
- var s = year + "-" + (month < 10 ? ('0' + month) : month) + "-" + (date < 10 ? ('0' + date) : date);
- return s;
- }
- });
-
- //+---------------------------------------------------
- //| 日期计算
- //+---------------------------------------------------
- Date.prototype.DateAdd = function (strInterval, Number) {
- var dtTmp = this;
- switch (strInterval) {
- case 's': return new Date(Date.parse(dtTmp) + (1000 * Number));// 秒
- case 'n': return new Date(Date.parse(dtTmp) + (60000 * Number));// 分
- case 'h': return new Date(Date.parse(dtTmp) + (3600000 * Number));// 小时
- case 'd': return new Date(Date.parse(dtTmp) + (86400000 * Number));// 天
- case 'w': return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));// 星期
- case 'q': return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number * 3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());// 季度
- case 'm': return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());// 月
- case 'y': return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());// 年
- }
- }
- //+---------------------------------------------------
- //| 比较日期差 dtEnd 格式为日期型或者 有效日期格式字符串
- //+---------------------------------------------------
- Date.prototype.DateDiff = function (strInterval, dtEnd) {
- var dtStart = this;
- if (typeof dtEnd == 'string')//如果是字符串转换为日期型
- {
- dtEnd = learun.parseDate(dtEnd);
- }
- switch (strInterval) {
- case 's': return parseInt((dtEnd - dtStart) / 1000);
- case 'n': return parseInt((dtEnd - dtStart) / 60000);
- case 'h': return parseInt((dtEnd - dtStart) / 3600000);
- case 'd': return parseInt((dtEnd - dtStart) / 86400000);
- case 'w': return parseInt((dtEnd - dtStart) / (86400000 * 7));
- case 'm': return (dtEnd.getMonth() + 1) + ((dtEnd.getFullYear() - dtStart.getFullYear()) * 12) - (dtStart.getMonth() + 1);
- case 'y': return dtEnd.getFullYear() - dtStart.getFullYear();
- }
- }
- //+---------------------------------------------------
- //| 取得当前日期所在月的最大天数
- //+---------------------------------------------------
- Date.prototype.MaxDayOfDate = function () {
- var myDate = this;
- //var ary = myDate.toArray();
- //var date1 = (new Date(ary[0], ary[1] + 1, 1));
- //var date2 = date1.DateAdd('m', 1);
- //var result = dateDiff(date1.Format('yyyy-MM-dd'), date2.Format('yyyy-MM-dd'));
- var date1 = learun.parseDate(learun.formatDate(myDate, 'yyyy-MM-01 00:00:00'));
- var date2 = date1.DateAdd('m', 1);
- var result = date1.DateDiff('d', date2);
- return result;
- }
- //---------------------------------------------------
- // 判断闰年
- //---------------------------------------------------
- Date.prototype.isLeapYear = function () {
- return (0 == this.getYear() % 4 && ((this.getYear() % 100 != 0) || (this.getYear() % 400 == 0)));
- }
- })(jQuery, top.learun);
|