mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 11:27:17 +08:00
37 lines
1.2 KiB
Go
37 lines
1.2 KiB
Go
import { DateTime, Duration } from 'luxon'
|
||
|
||
type Time = undefined | string | Date
|
||
|
||
/** 格式化时间,默认格式:yyyy-MM-dd HH:mm:ss */
|
||
export function formatDateTime(time: Time, format = 'yyyy-MM-dd HH:mm:ss'): string {
|
||
const dateTime = time ? DateTime.fromJSDate(new Date(time)) : DateTime.now()
|
||
return dateTime.toFormat(format)
|
||
}
|
||
|
||
/** 格式化日期,默认格式:yyyy-MM-dd */
|
||
export function formatDate(date: Time = undefined, format = 'yyyy-MM-dd') {
|
||
return formatDateTime(date, format)
|
||
}
|
||
|
||
/** 格式化持续时间,转为 x天x小时x分钟x秒 */
|
||
export function formatDuration(seconds: number) {
|
||
const duration = Duration.fromObject({ seconds })
|
||
const days = Math.floor(duration.as('days'))
|
||
const hours = duration.hours
|
||
const minutes = duration.minutes
|
||
const secs = duration.seconds
|
||
|
||
return `${days}天${hours}时${minutes}分${secs}秒`
|
||
}
|
||
|
||
/** 生成随机字符串 */
|
||
export function generateRandomString(length: number) {
|
||
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
|
||
let result = ''
|
||
for (let i = 0; i < length; i++) {
|
||
const randomIndex = Math.floor(Math.random() * characters.length)
|
||
result += characters[randomIndex]
|
||
}
|
||
return result
|
||
}
|