Files
gmTouringMiniApp/src/utils/dayjs/index.ts
T

60 lines
1.6 KiB
TypeScript
Raw Normal View History

2026-07-30 16:04:34 +08:00
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 }
}