/** * @desc 格式化日期 * date为日期格式: Date 或date字符串 Date | number | string * fmt为要转化的格式,如:'yyyy-MM-dd HH:mm:ss' */ export const dateFormatter = (date, fmt = 'yyyy-MM-dd HH:mm:ss') => { if (!date) return '' if (typeof date === 'string') { const time1 = date.replace(/-/g, '/') date = new Date(time1) } if (typeof date === 'number') { date = new Date(date) } const 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() // 毫秒 } const week = { 0: '/u65e5', 1: '/u4e00', 2: '/u4e8c', 3: '/u4e09', 4: '/u56db', 5: '/u4e94', 6: '/u516d' } 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 ? '/u661f/u671f' : '/u5468') : '') + week[date.getDay()]) } let k for (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 } /** * 获取相对当前时间叠加diff(可正可负数,正表示未来某个时间,负数表示过去某个时间) * 并且以指定format格式返回 * dateType: day|month|year * diff: Number * format: String */ export function getDiffDate(dateType = 'day', diff = 0, format = 'yyyy-MM-dd') { let retDate = new Date() switch (dateType) { case 'day': retDate.setTime(retDate.getTime() + 3600 * 1000 * 24 * diff) break case 'month': retDate = retDate.setMonth(retDate.getMonth() + diff) break case 'year': retDate = new Date( retDate.getFullYear() + diff, retDate.getMonth(), retDate.getDate() ) break } return dateFormatter(retDate, format) }
标签:格式化,retDate,fmt,Date,日期,diff,date,RegExp From: https://www.cnblogs.com/cdyun/p/17164079.html