/** 业务接口只接受毫秒时间戳;缺失或非法时间不伪装为当前时间。 */
|
export function businessTime(value: unknown): number | null {
|
return typeof value === 'number' && Number.isFinite(value) && Number.isFinite(new Date(value).getTime()) ? value : null
|
}
|
|
/** 将业务时间按浏览器本地时区展示,保留毫秒精度。 */
|
export function formatBusinessTime(value: unknown): string {
|
const time = businessTime(value)
|
if (time === null) return '-'
|
const date = new Date(time)
|
const pad = (part: number, length = 2) => String(part).padStart(length, '0')
|
return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}.${pad(date.getMilliseconds(), 3)}`
|
}
|
|
/** 只展示到分钟的紧凑时间,用于设备列表与候选列表。 */
|
export function formatBusinessMinute(value: unknown): string {
|
const date = businessDate(value)
|
if (date === null) return '-'
|
return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}`
|
}
|
|
/** 只展示月日与时分秒,用于实时监控卡片。 */
|
export function formatBusinessClock(value: unknown): string {
|
const date = businessDate(value)
|
if (date === null) return '-'
|
return `${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`
|
}
|
|
function businessDate(value: unknown): Date | null {
|
const time = businessTime(value)
|
return time === null ? null : new Date(time)
|
}
|
|
function pad(part: number): string {
|
return String(part).padStart(2, '0')
|
}
|