import dayjs from 'dayjs'; /** * 获取年月日 */ export function getYearAndMonthAndDays(date=new Date()) { let year = date.getFullYear() let month = date.getMonth() + 1 if (month < 10) { month = '0' + month + '-' } else { month = month + '-' } year = year + '-' let days = date.getDate() if (days < 10) { days = '0' + days } else { days = days } return (year + month + days) } /** * 日期格式化 */ export function dateFormat(date, format = 'yyyy-MM-dd hh:mm:ss') { if (date !== 'Invalid Date') { var o = { 'M+': date.getMonth() + 1, // month 'd+': date.getDate(), // day 'h+': date.getHours(), // hour 'm+': date.getMinutes(), // minute 's+': date.getSeconds(), // second 'q+': Math.floor((date.getMonth() + 3) / 3), // quarter S: date.getMilliseconds() // millisecond } if (/(y+)/.test(format)) { format = format.replace( RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length) ) } for (var k in o) { if (new RegExp('(' + k + ')').test(format)) { format = format.replace( RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length) ) } } return format } return '' } /** * 获取年月日 26号+1 * @param date * @returns {string} */ export function getYearAndMonthAndDaysZTNS(date = new Date()) { let year = date.getFullYear(); let month = date.getMonth(); let days = date.getDate(); // 判断是否是26号 if (days === 26) { month++; if (month > 11) { month = 0; year++; } } month += 1; month = month < 10 ? '0' + month + '-' : month + '-'; year = year + '-'; days = days < 10 ? '0' + days : days; return (year + month + days); } /** * 获取时间范围:26号-25号 * 初始化默认日期范围:近一个月(当前日期 - 30天 至 当前日期) * @param format * @returns {*[]} */ export function getTimeRange(format = 'YYYY-MM-DD HH:mm:ss') { // 获取当前时间 const now = dayjs(); // 获取当前日期的「日」(1-31) const currentDate = now.date(); let startTime, endTime; // 核心逻辑:判断当前日期是否大于25号 if (currentDate > 25) { // ✅ 情况1:当前日>25 → 当月26号 ~ 次月25号 startTime = now.startOf('month').add(25, 'day'); // 当月1号 +25天 = 26号 endTime = startTime.add(1, 'month').date(25).hour(23) .minute(59) .second(59); // 次月25号(dayjs自动处理跨年) } else { // ✅ 情况2:当前日≤25 → 上月26号 ~ 当月25号 startTime = now.subtract(1, 'month').startOf('month').add(25, 'day'); // 上月26号 endTime = now.date(25).hour(23) .minute(59) .second(59); // 当月25号 } // 返回格式化后的时间数组 return [startTime.format(format), endTime.format(format)]; } /** * 获取班次月份 * @returns {*} */ export function getWorkMonth(){ // 获取当前时间 const now = dayjs(); // 获取当前日期的「日」(1-31) const currentDate = now.date(); let workMonth; // 核心逻辑:判断当前日期是否大于25号 if (currentDate > 25) { workMonth = now.add(1, 'month') }else{ workMonth = now } return workMonth }