JS 日期封装操作

it2026-08-07  5

 JS对日期封装使用,采用正则匹配日期结构进行显示日期。

/** * 字符串转化为日期对象======》 调用格式为:str.format2Date("yyyy-MM-dd hh:mm:ss") * @param {str} 传入特殊格式 * @return {Date} * */ String.prototype.format2Date = function(style, option) { if (style) { let y = style.match("[Yy]{2,4}"); let M = style.match("M{1,2}"); let d = style.match("d{1,2}"); let h = style.match("h{1,2}"); let m = style.match("m{1,2}"); let s = style.match("s{1,2}"); let year = this.substring(y.index, y.index+y[0].length); let month = this.substring(M.index, M.index+M[0].length); let day = this.substring(d.index, d.index+d[0].length); let hour = h != null?this.substring(h.index, h.index+h[0].length):'00'; let minute = m != null?this.substring(m.index, m.index+m[0].length):'00'; let second = s != null?this.substring(s.index, s.index+s[0].length):'00'; return new Date(year+"/"+month+"/"+day+" "+hour+":"+minute+":"+second) } else { return new Date(this); } }; /** * 时间日期格式化======》 调用格式为:date.format2String("yyyy-MM-dd hh:mm:ss") * @param {[type]} style 时间格式字符串 * @returns {String} */ Date.prototype.format2String = function(style, option) { var o = { "[Yy]{2,4}" : this.getFullYear(), //year "M{1,2}" : this.getMonth() + 1, //month "d{1,2}" : this.getDate(), //day "H{1,2}" : this.getHours(), //hour "h{1,2}" : this.getHours()%24, //hour "m{1,2}" : this.getMinutes(), //minute "s{1,2}" : this.getSeconds(), //second "[Ee]" : this.getDay(), //day in week "[Ww]" : this.getDay(), //day in week "[Qq]" : Math.floor((this.getMonth()+3)/3), //quarter "S{3}|S{1}" : this.getMilliseconds()//millisecond }; for(var k in o ){ style = style.replace(new RegExp("("+ k +")"), function(match, g, offset, string){ return ("0".repeat(match.length)+o[k]).substr( (""+o[k]).length ); }) } return style; }; /** * 日期相减函数 * @param {date } 计算相减日期(传入日期无先后顺序) * * */ Date.prototype.dateSubtraction = function(date = new Date()) { var start = Date.parse(new Date(this.replace(/-|\/|\,/g, "\/"))); var end = Date.parse(new Date(date.replace(/-|\/|\,/g, "\/"))); if (start > end) { return parseInt((this.getTime() - date.getTime()) / (1000 * 60 * 60 * 24)); } else { return parseInt((date.getTime() - this.getTime()) / (1000 * 60 * 60 * 24)); } }; /** * 年:加/减 * @param type 计算类型(1:相加,2:相减) * @param {day} 相加或者相减天数 * * */ Date.prototype.yearCompute = function(type, day = 1) { var date = new Date(this); switch (type) { case 1: { date.setFullYear(parseInt(this.getFullYear() + day));console.log("12313", date); return date; } case 2: { date.setFullYear(parseInt(this.getFullYear() - day)); return date; } } }; /** * 月:加/减 * @param type 计算类型(1:相加,2:相减) * @param {month} 相加或者相减天数 * * */ Date.prototype.monthCompute = function(type, month = 1) { var date = new Date(this); switch (type) { case 1: { date.setMonth(parseInt(this.getMonth() + month)); return date; } case 2: { date.setMonth(parseInt(this.getMonth() - month)); return date; } } }; /** * 天:加/减 * @param type 计算类型(1:相加,2:相减) * @param {day} 相加或者相减天数 * * */ Date.prototype.dayCompute = function(type, day = 1) { var date = new Date(this); switch (type) { case 1: { date.setDate(parseInt(this.getDate() + day)); return date; } case 2: { date.setDate(parseInt(this.getDate() - day)); return date; } } }; /** * 小时:加/减 * @param type 计算类型(1:相加,2:相减) * @param {hour} 相加或者相减小时 * * */ Date.prototype.hourCompute = function(type, hour = 1) { var date = new Date(this); switch (type) { case 1: { date.setHours(parseInt(this.getHours() + hour)); return date; } case 2: { date.setHours(this.getHours() - hour); return date; } } }; /** * 分钟:加/减 * @param type 计算类型(1:相加,2:相减) * @param {minute} 相加或者相减小时 * * */ Date.prototype.minuteCompute = function(type, minute = 1) { var date = new Date(this); switch (type) { case 1: { date.setMinutes(parseInt(this.getMinutes() + minute)); return date; } case 2: { date.setMinutes(this.getMinutes() - minute); return date; } } }; /** * 秒钟:加/减 * @param type 计算类型(1:相加,2:相减) * @param {second} 相加或者相减小时 * * */ Date.prototype.secondCompute = function(type, second = 1) { var date = new Date(this); switch (type) { case 1: { date.setSeconds(parseInt(this.getSeconds() + second)); return date; } case 2: { date.setSeconds(parseInt(this.getSeconds() - second)); return date; } } }; /** * 毫秒:加/减 * @param type 计算类型(1:相加,2:相减) * @param {millisecond} 相加或者相减小时 * * */ Date.prototype.millisecondCompute = function(type, millisecond = 1) { var date = new Date(this); switch (type) { case 1: { date.setMilliseconds(parseInt(this.getMilliseconds() + millisecond)); return date; } case 2: { date.setMilliseconds(parseInt(this.getMilliseconds() - millisecond)); return date; } } };
最新回复(0)