/** * Independent time operation tool to facilitate subsequent switch to dayjs */ import dayjs from "dayjs"; export const DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss'; export const DATE_FORMAT = 'YYYY-MM-DD'; export const SHORT_DATE_FORMAT = 'MM-DD'; export const TIME_FORMAT = 'HH:mm:ss'; export function getDateTimeString(date: any = undefined): string { const d = dayjs(date) return `${d.year()}_${d.month() + 1}_${d.date()}_${d.hour()}_${d.minute()}_${d.second()}` } export function formatToDateTime(date: any = undefined, format = DATE_TIME_FORMAT,): string { return dayjs(date).format(format); } export function formatUnixToDateTime(date: number, format = DATE_TIME_FORMAT): string { return dayjs.unix(date).format(format); } export function formatToDate(date: any = undefined, format = DATE_FORMAT): string { return dayjs(date).format(format); } export function formatToShortDate(date: any = undefined, format = SHORT_DATE_FORMAT): string { return dayjs(date).format(format); } export function formatToTime(date: any = undefined, format = TIME_FORMAT): string { return dayjs(date).format(format); } export function getDays(date: any): number { const t1 = dayjs(date); const t2 = dayjs(new Date()); const days = t2.diff(t1, 'day'); return days; } export function getAge(date: any): number { if (!date) { return 0; } const t1 = dayjs(date); const t2 = dayjs(new Date()); const days = t2.diff(t1, 'year'); return days; } export function getAgeByYear(year: number): number { if (!year) { return 0; } const t2 = dayjs(new Date()); const age = t2.year() - year; return age; } /** * 获取指定日期的开始和结束时间 * YYYY-MM-DD 00:00:00 * YYYY-MM-DD 23:59:59 * @param date * @returns [begin,end,middle] */ export function getDateRange(date: any = undefined) { let dateString = ''; if (date) { dateString = dayjs(date).format("YYYY-MM-DD"); } else { dateString = dayjs().format("YYYY-MM-DD"); } const begin = new Date(dateString + " 00:00:00") const end = new Date(dateString + " 23:59:59") const middle = new Date(dateString + " 12:00:00") return [begin, end, middle] } /** * 获取日期的 00:00:00 * @param date * @returns */ export function getDateBegin(date: any = undefined) { let dateString = ''; if (date) { dateString = dayjs(date).format("YYYY-MM-DD"); } else { dateString = dayjs().format("YYYY-MM-DD"); } const begin = new Date(dateString + " 00:00:00") return begin } /** * 获取日期的 23:59:59 * @param date * @returns */ export function getDateEnd(date: any = undefined) { let dateString = ''; if (date) { dateString = dayjs(date).format("YYYY-MM-DD"); } else { dateString = dayjs().format("YYYY-MM-DD"); } const end = new Date(dateString + " 23:59:59") return end } /** * 获取日期的中午12点 * @param date * @returns */ export function getDateMiddle(date: any = undefined) { let dateString = ''; if (date) { dateString = dayjs(date).format("YYYY-MM-DD"); } else { dateString = dayjs().format("YYYY-MM-DD"); } const middle = new Date(dateString + " 12:00:00") return middle } /** * 获取指定日期所在月的开始和结束 * YYYY-MM-DD 00:00:00 * YYYY-MM-DD 23:59:59 * @param date * @returns [begin,end] */ export function getMonthRange(date: any) { const m = dayjs(date) const startDate = m.startOf('month') const endDate = m.endOf('month') const dateRange = [getDateBegin(startDate), getDateEnd(endDate)]; return dateRange; } /** * 获取指定日期所在周的开始和结束 * YYYY-MM-DD 00:00:00 * YYYY-MM-DD 23:59:59 * @param date * @returns [begin,end] */ export function getWeekRange(date: any) { const m = dayjs(date) const startDate = m.startOf('week') const endDate = m.endOf('week') const dateRange = [getDateBegin(startDate), getDateEnd(endDate)]; return dateRange; } export function getDateRangeString(input: any): string { const str = ''; if (Array.isArray(input)) { const [begin, end] = input; return `${formatToDate(begin)}-${formatToDate(end)}`; } return str; } // export function formatSeconds(seconds: any) { // const hours = Math.floor(seconds / 3600); // const minutes = Math.floor((seconds % 3600) / 60); // const secs = seconds % 60; // // 格式化为两位数,不足两位的用0补齐 // const hours2 = hours < 10 ? '0' + hours : hours; // const minutes2 = minutes < 10 ? '0' + minutes : minutes; // const secs2 = secs < 10 ? '0' + secs : secs; // return `${hours2}:${minutes2}:${secs2}`; // } // export function formatMilliseconds(milliseconds: any) { // const seconds = Math.floor(milliseconds / 1000); // const hours = Math.floor(seconds / 3600); // const minutes = Math.floor((seconds % 3600) / 60); // const secs = seconds % 60; // // 格式化为两位数,不足两位的用0补齐 // const hours2 = hours < 10 ? '0' + hours : hours; // const minutes2 = minutes < 10 ? '0' + minutes : minutes; // const secs2 = secs < 10 ? '0' + secs : secs; // return `${hours2}:${minutes2}:${secs2}`; // } export function formatSeconds(seconds: number): string { return formatMilliseconds(seconds * 1000); } export function formatMilliseconds(milliseconds: any) { const date = new Date(milliseconds); // 将秒数转换为毫秒数 const hours = date.getUTCHours().toString().padStart(2, '0'); const minutes = date.getUTCMinutes().toString().padStart(2, '0'); const secondsStr = date.getUTCSeconds().toString().padStart(2, '0'); return `${hours}:${minutes}:${secondsStr}`; }