| | |
| | | /** 业务接口只接受毫秒时间戳;缺失或非法时间不伪装为当前时间。 */ |
| | | /** |
| | | * 业务时间解析:只接受毫秒时间戳或 ISO-8601 文本,缺失或非法时间不伪装为当前时间。 |
| | | * |
| | | * <p>同时接受两种形态,是因为后端目前并不统一:手写 Map 的时间字段是毫秒数, |
| | | * 而 Instant 类型的 VO 属性走 ISO 文本(见 KNOWN-GAPS「时间字段两种形态」)。 |
| | | */ |
| | | export function businessTime(value: unknown): number | null { |
| | | return typeof value === 'number' && Number.isFinite(value) && Number.isFinite(new Date(value).getTime()) ? value : null |
| | | if (typeof value === 'number') { |
| | | return Number.isFinite(value) && Number.isFinite(new Date(value).getTime()) ? value : null |
| | | } |
| | | if (typeof value === 'string' && value.trim()) { |
| | | const parsed = new Date(value.trim()).getTime() |
| | | return Number.isFinite(parsed) ? parsed : null |
| | | } |
| | | return null |
| | | } |
| | | |
| | | /** 将业务时间按浏览器本地时区展示,保留毫秒精度。 */ |