/** 时间工具:统一 ISO 8601(UTC)字符串,跨端序列化口径一致 */ export function nowIso(): string { return new Date().toISOString(); } export function toIsoString(value: Date | number | string): string { const date = value instanceof Date ? value : new Date(value); if (Number.isNaN(date.getTime())) { throw new TypeError(`无法解析时间:${String(value)}`); } return date.toISOString(); } export function addSeconds(date: Date, seconds: number): Date { return new Date(date.getTime() + seconds * 1000); } const ISO_PATTERN = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?Z$/; export function isIsoDateString(value: string): boolean { return ISO_PATTERN.test(value) && !Number.isNaN(Date.parse(value)); }