60 lines
1.6 KiB
TypeScript
60 lines
1.6 KiB
TypeScript
import { isNumber } from '@pmun/utils'
|
|
import dayjs from 'dayjs'
|
|
import customParseFormat from 'dayjs/plugin/customParseFormat'
|
|
|
|
// 导入本地化语言
|
|
import 'dayjs/locale/zh-cn'
|
|
|
|
dayjs.locale('zh-cn')
|
|
dayjs.extend(customParseFormat)
|
|
|
|
export type dayJsDate = string | number | Date
|
|
|
|
// 判断时间戳是否毫秒
|
|
export function isMillisecondTimestamp(value: dayJsDate) {
|
|
if (typeof value !== 'number' || value.toString().length !== 13)
|
|
return false
|
|
|
|
const date = new Date(value)
|
|
return !Number.isNaN(date.getTime())
|
|
}
|
|
|
|
// 转换为 dayjs 接收参数
|
|
export function convertToDayjsParam(value: dayJsDate) {
|
|
if (!isMillisecondTimestamp(value) && isNumber(value))
|
|
return value * 1000
|
|
|
|
return value
|
|
}
|
|
|
|
export function stringFormat(date: string, format: string) {
|
|
return dayjs(date, format)
|
|
}
|
|
|
|
export function formatCalendar(date: dayJsDate) {
|
|
return formatTime(date, 'MM-DD')
|
|
}
|
|
|
|
export function formatTime(date?: dayJsDate, format = 'YYYY-MM-DD') {
|
|
if (!date)
|
|
return ''
|
|
|
|
return dayjs(convertToDayjsParam(date)).format(format)
|
|
}
|
|
|
|
// 将时间戳格式化成完整的时间字符串
|
|
export function formatFullTime(date?: dayJsDate) {
|
|
return formatTime(date, 'YYYY年MM月DD日 HH:mm:ss')
|
|
}
|
|
|
|
export function diffDate(start: dayJsDate, end: dayJsDate, unit: dayjs.OpUnitType = 'day') {
|
|
return dayjs(convertToDayjsParam(start)).diff(dayjs(convertToDayjsParam(end)), unit)
|
|
}
|
|
|
|
// 获取今天和明天的日期
|
|
export function getTodayAndTomorrow(template = 'YYYY-MM-DD') {
|
|
const today = dayjs().format(template)
|
|
const tomorrow = dayjs().add(1, 'day').format(template)
|
|
return { today, tomorrow }
|
|
}
|