计算某日期到某日期相差天数
parseInt(Math.abs(new Date('1988-07-11') - new Date('2023-07-11')) / (1000*60*60*24))
计算某日期到某日期相差月份数
function getDiffMonths(startDate, endDate) { //startDate、endDate的格式可以为“yyyy/MM/dd”、“yyyy-MM-dd”、“yyyy年MM月dd日”或Date(); //返回日期的数组 如 ['2021/07/10','2021/07/11'] let sd = new Date(startDate), sy = sd.getFullYear(), sm = sd.getMonth() + 1, sms = sy * 12 + sm,ed = new Date(endDate), ey = ed.getFullYear(), em = ed.getMonth() + 1, ems = ey * 12 + em; return Math.abs(ems - sms); } console.log(getDiffMonths('1988-07-11','2023-07-11'))
//计算两个日期之间相差几个月 function getDisMonths(startDate, endDate) { startDate = new Date(startDate).toLocaleString("zh-Hans-CN", {year: "numeric", month: "2-digit", day: "2-digit"}).split("/"); endDate = new Date(endDate).toLocaleString("zh-Hans-CN", {year: "numeric", month: "2-digit", day: "2-digit"}).split("/"); var year1 = parseInt(startDate[0]), month1 = parseInt(startDate[1]), year2 = parseInt(endDate[0]), month2 = parseInt(endDate[1]), months = Math.abs(year2 - year1) * 12 + Math.abs(month2 - month1); return months; } console.log(getDisMonths(new Date(2020, 5), new Date(2021, 7)));//14
// 当前日期转换为:yyyy/MM/dd HH:mm:ss(24小时制)________________________ new Date().toLocaleString("zh-Hans-CN", {dateStyle: "short", timeStyle: "medium", hour12: false}); // 当前日期转换为:yyyy/MM/dd 上午/下午HH:mm:ss(12小时制)________________________ new Date().toLocaleString("zh-Hans-CN", {dateStyle: "short", timeStyle: "medium"}); // 当前日期转换为:yyyy-MM-dd HH:mm:ss(24小时制 双位数)年月日时分秒________________________ new Date().toLocaleString("zh-Hans-CN", {year: "numeric", month: "2-digit", day: "2-digit", hour12: false, hour: "2-digit", minute: "2-digit", second: "2-digit"}).replace(/\//g, "-"); // 当前日期转换为:yyyyMMddHHmmss(24小时制 双位数)年月日时分秒________________________ new Date().toLocaleString("zh-Hans-CN", { year: "numeric", month: "2-digit", day: "2-digit", hour12: false, hour: "2-digit", minute: "2-digit", second: "2-digit" }).replace(/[\/ :]/g, ""); // 当前日期转换为:yyyy-MM-dd________________________ new Date().toLocaleString("zh-Hans-CN", {year: "numeric", month: "2-digit", day: "2-digit"}).replace(/\//g, "-"); // 当前日期转换为:HH:mm:ss(24小时制 双位数)________________________ new Date().toLocaleString("zh-Hans-CN", {hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false}); // 当前日期转换为:HH:mm(24小时制 双位数)________________________ new Date().toLocaleString("zh-Hans-CN", {hour: "2-digit", minute: "2-digit", hour12: false}); // 当前日期转换为:公元yyyy年MM月dd日星期D HH:mm:ss(24小时制)________________________ new Date().toLocaleString("zh-Hans-CN", {era:'short',year: "numeric", month: "short", day: "numeric", weekday: "long", hour: "numeric", minute: "numeric", second: "numeric", hour12: false}); // 当前日期转换为:yyyy年MM月dd日星期D HH:mm:ss(24小时制)________________________ new Date().toLocaleString("zh-Hans-CN", {year: "numeric", month: "short", day: "numeric", weekday: "long", hour: "numeric", minute: "numeric", second: "numeric", hour12: false}); // 当前日期转换为:yyyy年MM月dd日周D HH:mm:ss(24小时制)________________________ new Date().toLocaleString("zh-Hans-CN", {year: "numeric", month: "short", day: "numeric", weekday: "short", hour: "numeric", minute: "numeric", second: "numeric", hour12: false}); // 当前日期转换为:yyyy年MM月dd日D HH:mm:ss(24小时制)________________________ new Date().toLocaleString("zh-Hans-CN", {year: "numeric", month: "short", day: "numeric", weekday: "narrow", hour: "numeric", minute: "numeric", second: "numeric", hour12: false}); // 当前日期转换为:yyyy年MM月dd日星期D HH:mm:ss(24小时制)________________________ new Date().toLocaleString("zh-Hans-CN", {year: "numeric", month: "short", day: "numeric", hour: "numeric", minute: "numeric", second: "numeric", hour12: false}); // 当前日期转换为:yyyy年MM月dd日星期D________________________ new Date().toLocaleString("zh-Hans-CN", {year: "numeric", month: "short", day: "numeric", weekday: "long"}); // 当前日期转换为:yyyy年MM月dd日周D________________________ new Date().toLocaleString("zh-Hans-CN", {year: "numeric", month: "short", day: "numeric", weekday: "short"}); // 当前日期转换为:yyyy年MM月dd日D________________________ new Date().toLocaleString("zh-Hans-CN", {year: "numeric", month: "short", day: "numeric", weekday: "narrow"}); // 当前日期转换为:yyyy年MM月dd日________________________ new Date().toLocaleString("zh-Hans-CN", {year: "numeric", month: "short", day: "numeric"}); //部分笨拙的方法________________________ var yearMonthDay = new Date().getFullYear() + ("0" + (new Date().getMonth() + 1)).slice(-2) + ("0" + new Date().getDate()).slice(-2);//yyyyMMdd var year_Month_Day = new Date().getFullYear() + "-" + ("0" + (new Date().getMonth() + 1)).slice(-2) + "-" + ("0" + new Date().getDate()).slice(-2);//yyyy-MM-dd //部分笨拙的方法(ES6)________________________ var yearMonthDay = new Date().getFullYear() + (new Date().getMonth() + 1).toString().padStart(2, 0) + (new Date().getDate()).toString().padStart(2, 0);//yyyyMMdd var year_Month_Day = new Date().getFullYear() + "-" + (new Date().getMonth() + 1).toString().padStart(2, 0) + "-" + (new Date().getDate()).toString().padStart(2, 0);//yyyy-MM-dd //当月第一天、当月最后一天年月日(yyyy-MM-dd)________________________ new Date(new Date().getFullYear(),new Date().getMonth(),1).toLocaleString("zh-Hans-CN", {year: "numeric", month: "2-digit", day: "2-digit"}).replace(/\//g, "-"); new Date(new Date().getFullYear(),new Date().getMonth()+1,0).toLocaleString("zh-Hans-CN", {year: "numeric", month: "2-digit", day: "2-digit"}).replace(/\//g, "-"); /**日期方法大合集*/ var date = { //新方法(时:分:秒) HH_mm_ss(date = null) { return new Date(date).toLocaleString("zh-Hans-CN", { hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false }); }, //新方法(年-月-日) yyyy_MM_dd(date = null) { return new Date(date).toLocaleString("zh-Hans-CN", { year: "numeric", month: "2-digit", day: "2-digit" }).replace(/\//g, "-"); }, //新方法(年-月-日 时:分:秒) yyyy_MM_dd_HH_mm_ss(date = null) { return new Date(date).toLocaleString("zh-Hans-CN", { year: "numeric", month: "2-digit", day: "2-digit", hour12: false, hour: "2-digit", minute: "2-digit", second: "2-digit" }).replace(/\//g, "-"); }, yearMonthDay: function () { return new Date().getFullYear() + ("0" + (new Date().getMonth() + 1)).slice(-2) + ("0" + new Date().getDate()).slice(-2); }, year_Month_Day: function () { return new Date().getFullYear() + "-" + ("0" + (new Date().getMonth() + 1)).slice(-2) + "-" + ("0" + new Date().getDate()).slice(-2); }, yMd: function (dt, split) { dt || (dt = new Date()); split || (split = "-"); return dt.getFullYear() + split + ("0" + (dt.getMonth() + 1)).slice(-2) + split + ("0" + dt.getDate()).slice(-2); }, /**判断是否逾期*/ over: function (endDate, isEqual) { var d1 = new Date().getTime(), d2 = new Date(endDate).getTime(); return isEqual ? d1 >= d2 : d1 > d2; }, /**比较日期大小,前一个日期大于(isEqual=true时 比较大于等于)后一个日期时返回true*/ compare: function (d1, d2, isEqual) { d1 = new Date(d1).getTime(), d2 = new Date(d2).getTime(); return isEqual ? d1 >= d2 : d1 > d2; }, /**获取指定日期之前/之后的某天*/ pointDate: function (dt, n) { if (!n) return dt; var s = "/"; if (dt.indexOf("-") > -1) { s = "-", dt = dt.replace(/-/g, "/"); } else if (dt.indexOf(".") > -1) { s = ".", dt = dt.replace(/\./g, "/"); } var d = new Date(dt), lw = new Date(Number(d) + 1000 * 60 * 60 * 24 * Math.floor(n)), /*n天数*/ ly = lw.getFullYear(), lm = lw.getMonth() + 1, ld = lw.getDate(), sd = ly + s + (lm < 10 ? "0" + lm : lm) + s + (ld < 10 ? "0" + ld : ld); return sd; }, /**获得当前日期之前之后任意天的日期*/ anyDate: function (n) { var dt = new Date(); dt.setDate(dt.getDate() + n); return this.yMd(dt); }, /**获得当前日期之前之后任意天的日期+时间*/ anyDateTime: function (n) { var dt = new Date(); dt.setDate(dt.getDate() + n); return formatDateTime(dt); }, /**获得任意天的日期时间戳:n为负数就是过去的天数,正数则为未来的天数*/ anyDateTimeStamp: function (n) { return new Date(date.anyDate(n) + " 00:00:00").getTime(); }, /**获得本月的开始日期、结束日期*/ monthStartOrEndDate: function (isStart) { var now = new Date(), m = now.getMonth(), y = now.getFullYear(), msd = new Date(y, m, Boolean(isStart) ? 1 : new Date(y, m + 1, 0).getDate()); return date.yMd(msd); }, /**获得本周的开始日期、结束日期*/ weekStartOrEndDate: function (isStart) { var now = new Date(), d = now.getDay(), nd = now.getDate(), m = now.getMonth(), y = now.getFullYear(), wsd = new Date(y, m, nd + (Boolean(isStart) ? -d : 6 - d)); return date.yMd(wsd); }, /**计算指定日期加上多少天、加多少月、加多少年的日期*/ add: function (type, number, date) { var d = date ? (date instanceof Date ? date : new Date(date)) : new Date(); switch (type) { case "y": d.setFullYear(d.getFullYear() + number); return d; case "q": d.setMonth(d.getMonth() + number * 3); return d; case "m": d.setMonth(d.getMonth() + number); return d; case "w": d.setDate(d.getDate() + number * 7); return d; case "d": d.setDate(d.getDate() + number); return d; case "h": d.setHours(d.getHours() + number); return d; case "m": d.setMinutes(d.getMinutes() + number); return d; case "s": d.setSeconds(d.getSeconds() + number); return d; default: d.setDate(d.getDate() + number); return d; } /*/!* 加2天.*!/ alert(date.add("d ", 2).toLocaleString()) /!* 加2月.*!/ alert(date.add("m ", 2).toLocaleString()) /!* 加2年*!/ alert(date.add("y ", 2).toLocaleString());*/ }, format: function (date, fmt) { date = date instanceof Date ? date : new Date(date); var o = { "M+": date.getMonth() + 1, "d+": date.getDate(), "h+": date.getHours() % 12 == 0 ? 12 : date.getHours() % 12, "H+": date.getHours(), "m+": date.getMinutes(), "s+": date.getSeconds(), "q+": Math.floor((date.getMonth() + 3) / 3), "S": date.getMilliseconds() }; if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); } if (/(E+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "星期" : "周") : "") + "日一二三四五六".charAt(date.getDay())); } for (var k in o) { if (new RegExp("(" + k + ")").test(fmt)) { fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); } } return fmt; }, /**格式化日期:yyyy-MM-dd HH:mm:ss */ formatDate: function (timeStamp) { return date.format(timeStamp ? (timeStamp instanceof Date ? timeStamp : new Date(timeStamp)) : new Date(), "yyyy-MM-dd"); }, /**格式化日期:yyyy-MM-dd HH:mm:ss */ formatDateTime: function (timeStamp) { return date.format(timeStamp ? (timeStamp instanceof Date ? timeStamp : new Date(timeStamp)) : new Date(), "yyyy-MM-dd HH:mm:ss"); }, /**格式化日期:yyyy年MM月dd日 HH:mm:ss */ formatToyyyyMMddHHmmssEE: function (timeStamp) { return date.format(timeStamp ? (timeStamp instanceof Date ? timeStamp : new Date(timeStamp)) : new Date(), "yyyy年MM月dd日 HH:mm:ss EE"); }, getDay: function () { return "星期" + "日一二三四五六".charAt(new Date().getDay()); }, /**转换Date为24小时计时时间格式*/ to24hours: function (date) { var now = date ? (date instanceof Date ? date : new Date(date)) : new Date(), now = now.toLocaleTimeString("zh-Hans-CN", {hour12: false}), now = now.substr(0, now.lastIndexOf(":")); return now; }, /**将秒数量转换为时分秒字符串*/ toHourMinuteSecond: function (second, data) { var t = "", s = Math.round(second), d = data.isDoubleDigits,//显示双位数 hz = data.hideZero,//隐藏为0的时间单位 hh = data.hideHour,//隐藏小时 hm = data.hideMinute,//隐藏分钟 hs = data.hideSecond;//隐藏秒钟 if (s > 0) { var hour = Math.floor(s / 3600), min = Math.floor(s / 60) % 60, sec = s % 60; hh || (hz && !hour) || (d && hour < 10 && (t += "0"), t += hour + "时"); hm || (hz && !min) || (d && min < 10 && (t += "0"), t += min + "分"); hs || (hz && !sec) || (d && sec < 10 && (t += "0"), t += sec + "秒"); } return t; //测试用例 /*alert(toHourMinuteSecond(3661,{ // isDoubleDigits:true, hideZero:true, // hideHour:true, // hideMinute:true, // hideSecond:true, }));*/ }, /**获取最近几个月的年月份*/ getRecentSeveralMonth: function (n) { var date = new Date(); var nearMonth = []; for (var i = 1; i <= n; i++) { date.setMonth(date.getMonth() - 1); nearMonth.unshift(date.getFullYear() + "/" + (date.getMonth() + 1)); } return nearMonth; }, /**把时间转换为分钟数*/ hourMinuteToMinute: function (timeString) { timeString = timeString.replace(/:/g, ":").replace(/\ |\ /g, "").replace(/::/g, ":").split(":"); return parseInt(timeString[0] * 60) + parseInt(timeString[1]); }, /**显示几分钟前刚刚发布文章*/ timeAgo: function (timeStamp) { var minute = 1000 * 60, hour = minute * 60, day = hour * 24, week = day * 7, month = day * 30, now = new Date().getTime(), diffValue = now - timeStamp; var minC = diffValue / minute, hourC = diffValue / hour, dayC = diffValue / day, weekC = diffValue / week, monthC = diffValue / month, res; if (monthC > 3 && monthC < 12) { res = "半年前"; } else if (monthC >= 1 && monthC <= 3) { res = parseInt(monthC) + "月前"; } else if (weekC >= 1 && weekC < 4) { res = parseInt(weekC) + "周前"; } else if (dayC >= 1 && dayC < 7) { res = parseInt(dayC) + "天前"; } else if (hourC >= 1 && hourC < 24) { res = parseInt(hourC) + "小时前"; } else if (minC >= 1 && minC < 60) { res = parseInt(minC) + "分钟前"; } else if (diffValue >= 0 && diffValue <= minute) { res = "刚刚"; } else { res = this.formatDateTime(timeStamp); } return res; }, between: function (startDate, endDate) { startDate = startDate instanceof Date ? startDate : new Date(startDate); endDate = endDate instanceof Date ? endDate : new Date(endDate); var today = new Date().getTime(), startDate = new Date(startDate).getTime(), endDate = new Date(endDate).getTime(); return startDate < today && today < endDate; }, /**计算两个日期相差天数*/ getDayBetween: function (startDate, endDate) { return Math.floor(this.getMillisecondBetween(startDate, endDate)/ 86400000); }, /**计算两个日期相差毫秒数*/ getMillisecondBetween: function (startDate, endDate) { startDate = startDate instanceof Date ? startDate : new Date(startDate); endDate = endDate instanceof Date ? endDate : new Date(endDate); return Math.abs(Date.parse(endDate) - Date.parse(startDate)); } }; //获取周一的日期 getMonday() { var day = new Date().getDay(); //获取时间的星期数 var time = new Date().setDate(new Date().getDate() - (day ? day - 1 : 6)); //获取minus天前的日期 return new Date(time).toLocaleString("zh-Hans-CN", {year: "numeric", month: "2-digit", day: "2-digit"}) + " 00:00:00"; }, //获取周五的日期 getFriday() { var day = new Date().getDay(); //获取时间的星期数 var time = new Date().setDate(new Date().getDate() + (day ? 5 - day : -2)); //获取minus天前的日期 return new Date(time).toLocaleString("zh-Hans-CN", {year: "numeric", month: "2-digit", day: "2-digit"}) + " 00:00:00"; }, //获取周日的日期 getSunday(index) { var day = new Date().getDay(); //获取时间的星期数 var time = new Date().setDate(new Date().getDate() + (index * 7) + (day ? 7 - day : 0)); //获取minus天前的日期 return new Date(time).toLocaleString("zh-Hans-CN", { year: "numeric", month: "2-digit", day: "2-digit" }).replace(/\//g, '-'); },
【年月日】、【年月】日期序列前往此处↓