赞
踩
class DateUtils { /** * 格式化日期 * @param {*} date 日期 * @param {*} formatter 格式 * @returns 格式化日期 */ static formatDate(date, formatter) { if (!date) { return '' } if (!(date instanceof Date)) { date = new Date(date) } const y = date.getFullYear() // 这里month得加1 const m = `${date.getMonth() + 1}`.padStart(2, 0) const d = `${date.getDate()}`.padStart(2, 0) const hh = `${date.getHours()}`.padStart(2, 0) const mm = `${date.getMinutes()}`.padStart(2, 0) const ss = `${date.getSeconds()}`.padStart(2, 0) const SSS = `${date.getMilliseconds()}`.padStart(3, 0) if (formatter) { return formatter .replace('yyyy', y) .replace('MM', m) .replace('dd', d) .replace('hh', hh) .replace('mm', mm) .replace('ss', ss) .replace('SSS', SSS) } // 默认返回 yyy-mm-dd hh:mm:ss return `${y}-${m}-${d} ${hh}:${mm}:${ss}` } /** * 计算日期差值 * @param {*} startDate 开始日期 * @param {*} endDate 结束日期 * @returns 返回计算结果 */ static calculateDiffDate(startDate, endDate) { if (!startDate || !endDate) return '' if (!(startDate instanceof Date)) { startDate = new Date(startDate) } if (!(endDate instanceof Date)) { endDate = new Date(endDate) } const startTime = startDate.getTime() const endTime = endDate.getTime() const total = (endTime - startTime) / 1000 const day = parseInt(total / (24 * 60 * 60)) // 计算整数天数 const afterDay = total - day * 24 * 60 * 60 // 取得值算出天数后剩余的转秒数 const hour = parseInt(afterDay / (60 * 60)) // 计算整数小时数 const totalHour = total / (60 * 60) // 换算小时数 const afterHour = total - day * 24 * 60 * 60 - hour * 60 * 60 // 取得算出小时数后剩余的秒数 const min = parseInt(afterHour / 60) // 计算整数分 const totalMin = total / 60 // 换算分钟数据 const afterMin = total - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60 // 取得算出分后剩余的秒数 const result = { day, afterDay, hour, totalHour, afterHour, min, totalMin, afterMin } return result } /** * 日期+天 * @param {*} day * @param {*} n * @returns */ static AddDays(day, n) { if (!day) { return '' } const t = new Date(day) t.setDate(t.getDate() + n) return t } /** * 日期+月。日对日,若目标月份不存在该日期,则置为最后一日 * @param {*} day * @param {*} n * @returns */ static AddMonths(day, n) { if (!day) { return '' } const t = new Date(day) const s = new Date(day) t.setMonth(t.getMonth() + n) if (t.getDate() !== s.getDate()) { t.setDate(0) } return t } /** * 日期+年。月对月日对日,若目标年月不存在该日期,则置为最后一日 * @param {*} day * @param {*} n * @returns */ static AddYears(day, n) { if (!day) { return '' } const t = new Date(day) const s = new Date(day) t.setFullYear(t.getFullYear() + n) if (t.getDate() !== s.getDate()) { t.setDate(0) } return t } /** * 获得本季度的开始月份 * @param {*} dateMonth * @returns */ static getQuarterStartMonth(date) { if (!date) { return '' } const t = new Date(date) const dateMonth = t.getMonth() if (dateMonth <= 2) { return 0 } if (dateMonth <= 5) { return 3 } if (dateMonth <= 8) { return 6 } return 9 } /** * 周一 * * @param {*} date * @param {*} dateDayOfWeek * @returns */ static getWeekStartDate(date) { if (!date) { return '' } const t = new Date(date) // 今天是本周的第几天。周一=0,周日=6 const dateDayOfWeek = t.getDay() === 0 ? 6 : t.getDay() - 1 return DateUtils.AddDays(date, -dateDayOfWeek) } /** * 周日。本周一+6天 * @returns */ static getWeekEndDate(date) { return DateUtils.AddDays(DateUtils.getWeekStartDate(date), 6) } /** * 月初 * @param {*} dateYear * @param {*} dateMonth * @returns */ static getMonthStartDate(date) { if (!date) { return '' } const t = new Date(date) const dateYear = t.getFullYear() const dateMonth = t.getMonth() return new Date(dateYear, dateMonth, 1) } /** * 月末。下月初-1天 * @returns */ static getMonthEndDate(date) { return DateUtils.AddDays(DateUtils.AddMonths(DateUtils.getMonthStartDate(date), 1), -1) } /** * 季度初 * dateYear = date.getFullYear() * @param {*} dateYear * @returns */ static getQuarterStartDate(date) { if (!date) { return '' } const t = new Date(date) const dateYear = t.getFullYear() return new Date(dateYear, DateUtils.getQuarterStartMonth(date), 1) } /** * 季度末。下季初-1天 * @returns */ static getQuarterEndDate(date) { return DateUtils.AddDays(DateUtils.AddMonths(DateUtils.getQuarterStartDate(date), 3), -1) } /** * 年初,1-1 * @param {*} date * @returns */ static getYearDateStart(date) { if (!date) { return '' } const t = new Date(date) const dateYear = t.getFullYear() return new Date(dateYear, 0, 1) } /** * 年末 12-31 * @param {*} date * @returns */ static getYearDateEnd(date) { if (!date) { return '' } const t = new Date(date) const dateYear = t.getFullYear() return new Date(dateYear, 11, 31) } } export default DateUtils
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。