js中最常用的日期总结
日期格式化
/** 日期格式化 * formatTime('星期W') // 星期日 formatTime("YYYY-MM-DD hh:mm:ss") // 2021-03-21 20:24:32 formatTime("MM/DD/YYYY hh:mm") // 03-21-2021 20:24 formatTime("MM/DD/YYYY hh:mm") // 03-21-2021 20:24 formatTime("YYYY年MM月DD日 hh:mm:ss 星期W") // 2021年03月21日 20:30:14 星期日 * @returns */ export function formatTime(fmt) { const date = new Date() const o = { "Y+": date.getFullYear(), "M+": date.getMonth() + 1, // 月 "D+": date.getDate(), // 日 "h+": date.getHours(), // 时 "m+": date.getMinutes(), // 分 "s+": date.getSeconds(), // 秒 "W": date.getDay() // 周 } for (let k in o) { if (new RegExp("(" + k + ")").test(fmt)) { fmt = fmt.replace(RegExp.$1, () => { if (k === 'W') { // 星期几 const week = ['日', '一', '二', '三', '四', '五', '六'] return week[o[k]] } else if (k === 'Y+' || RegExp.$1.length == 1) { // 年份 or 小于10不加0 return o[k] } else { return ("00" + o[k]).substr(("" + o[k]).length) // 小于10补位0 } }) } } return fmt }
时间渲染
/** * 时间渲染 * @param {string} text */ export function renderTime(time) { if (time) { if (typeof time === 'string') { return time.split(' ')[0]; } else if (typeof time === 'number') { return dateFormat(time, 'yyyy-MM-dd') } } return renderText(null); }
去年的当前时间
export function lastYear() { let date = new Date(); let seperator1 = "-"; let seperator2 = ":"; let month = date.getMonth() + 1; let strDate = date.getDate(); if (month >= 1 && month <= 9) { month = "0" + month; } if (strDate >= 0 && strDate <= 9) { strDate = "0" + strDate; } let currentdate = date.getFullYear() - 1 + seperator1 + month + seperator1 + strDate + " " + date.getHours() + seperator2 + date.getMinutes() + seperator2 + date.getSeconds(); return currentdate; }
获得给定毫秒数的可读格式
/* 获得给定毫秒数的可读格式 // 事例 formatDuration(1001); // '1 second, 1 millisecond' formatDuration(34325055574); // '397 days, 6 hours, 44 minutes, 15 seconds, 574 milliseconds' */ export function formatDuration(ms) { if (ms < 0) ms = -ms; const time = { day: Math.floor(ms / 86400000), hour: Math.floor(ms / 3600000) % 24, minute: Math.floor(ms / 60000) % 60, second: Math.floor(ms / 1000) % 60, millisecond: Math.floor(ms) % 1000 }; return Object.entries(time) .filter(val => val[1] !== 0) .map(([key, val]) => `${val} ${key}${val !== 1 ? 's' : ''}`) .join(', '); };
两个日期之间的差异---相差的天数
/* 两个日期之间的差异---相差的天数 // 事例 getDaysDiffBetweenDates(new Date('2017-12-13'), new Date('2017-12-22')); // 9 */ export const getDaysDiffBetweenDates = (dateInitial, dateFinal) => (dateFinal - dateInitial) / (1000 * 3600 * 24);
时间格式2020-02-11T12:24:18.000+0000转化成正常格式
/* 2016-09-19T11:14:00+08:00 *时间格式2020-02-11T12:24:18.000+0000转化成正常格式 renderTimeTwo('2020-12-17T11:11:42.861') //"2020-12-17 11:11:42" */ export function renderTimeTwo(date) { let dateee = new Date(date).toJSON(); return new Date(+new Date(dateee) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '') }
时间转为几天前、几小时前、几分钟前
export function getDateDiff(dateTimeStamp) { // 时间字符串转时间戳 let timestamp = new Date(dateTimeStamp).getTime(); let minute = 1000 * 60; let hour = minute * 60; let day = hour * 24; let halfamonth = day * 15; let month = day * 30; let year = day * 365; let now = new Date().getTime(); let diffValue = now - timestamp; let result; if (diffValue < 0) { return; } let yearC = diffValue / year; let monthC = diffValue / month; let weekC = diffValue / (7 * day); let dayC = diffValue / day; let hourC = diffValue / hour; let minC = diffValue / minute; if (yearC >= 1) { result = "" + parseInt(yearC) + "年前"; } else if (monthC >= 1) { result = "" + parseInt(monthC) + "月前"; } else if (weekC >= 1) { result = "" + parseInt(weekC) + "周前"; } else if (dayC >= 1) { result = "" + parseInt(dayC) + "天前"; } else if (hourC >= 1) { result = "" + parseInt(hourC) + "小时前"; } else if (minC >= 1) { result = "" + parseInt(minC) + "分钟前"; } else result = "刚刚"; return result; }
判断时间是否在区间之内
/*** * 判断时间是否在区间之内 * console.log(times('08:30', '15:54')) */ export function timeInterval(beginTime, endTime){ const bDate = beginTime.split(':') const eDate = endTime.split(':') const o = {} const s = ['nDate', 'bDate', 'eDate'] for (let i of s) { o[i] = new Date() let hours, minute; if (i == 'nDate') { hours = o[i].getHours() minute = o[i].getMinutes() } else { const arr = i == 'bDate' ? bDate : eDate hours = arr[0] minute = arr[1] || 0 } o[i].setHours(hours) o[i].setMinutes(minute) } // 当前、开始、结束,三者的时间戳进行对比,答案就很清晰明了 return o.nDate.getTime() - o.bDate.getTime() > 0 && o.nDate.getTime() - o.eDate.getTime() < 0 }
后七天日期
export function getAfterDate(){ let date = new Date().getTime(), result = [], newDate, year, month, day; for (let i = 1; i < 8; i++) { newDate = date + i * 24 * 60 * 60 * 1000; year = new Date(newDate).getFullYear(); month = (new Date(newDate).getMonth() + 1)>9?(new Date(newDate).getMonth() + 1):'0'+(new Date(newDate).getMonth() + 1); day = new Date(newDate).getDate(); result.push(year+'-'+month + '-' + day); } return result }
前七天日期
export function getBeforeDate(designatedTime) { designatedTime=designatedTime||new Date() let date = new Date(designatedTime).getTime(), result = [], newDate, year, month, day; for (let i = 7; i > 0; i--) { newDate = date - i * 24 * 60 * 60 * 1000; year = new Date(newDate).getFullYear(); month = (new Date(newDate).getMonth() + 1) > 9 ? (new Date(newDate).getMonth() + 1) : '0' + (new Date(newDate).getMonth() + 1) day = new Date(newDate).getDate(); day = day > 9 ? day : '0' + day; result.push(year+'-'+month + '-' + day); } return result }
是否七天内日期(当前时间后7天范围内,包含当天时间)
/* 是否七天内日期(当前时间后7天范围内,包含当天时间) currentTime----当前时间 timestamp----是否时间之内 console.log(isTime('2021-04-16')) // true console.log(isTime('2021-04-15')) // true console.log(isTime('2021-04-22')) // false isTime('2021-04-26','2021-04-22') //true---26号在22号7天范围内 */ export function isTime(timestamp,currentTime) { currentTime=currentTime||new Date(); timestamp = new Date(timestamp).getTime(); const endTime = 24 * 60 * 60 * 1000 * 7; currentTime = new Date(currentTime).setHours(0, 0, 0, 0); return currentTime <= timestamp && currentTime + endTime > timestamp }
倒计时
/* 倒计时 setInterval(GetRTime('2021-07-20 00:00:00'),0); console.log(GetRTime('2021-07-20 00:00:00')) */ export function GetRTime(time) { // time = '2016-07-20 00:00:00'; time = time.replace("-", "/"); let EndTime = new Date(time); let NowTime = new Date(); // let t = EndTime.getTime() - NowTime.getTime(); let EndTime1 = EndTime.getTime(); let NowTime1 = NowTime.getTime(); let t = parseFloat(EndTime1) - parseFloat(NowTime1); let d = 0; let h = 0; let m = 0; let s = 0; if (t >= 0) { d = Math.floor(t / 1000 / 60 / 60 / 24); h = Math.floor(t / 1000 / 60 / 60 % 24); m = Math.floor(t / 1000 / 60 % 60); s = Math.floor(t / 1000 % 60); return { day: d, hour: h, minute: m, second: s } } else { return false } }

浙公网安备 33010602011771号