yeg
2026-09-28 2c96ead3fcfe5df3ab1c46ec13ec4f681fd16d82
src/utils/businessTime.ts
@@ -1,6 +1,18 @@
/** 业务接口只接受毫秒时间戳;缺失或非法时间不伪装为当前时间。 */
/**
 * 业务时间解析:只接受毫秒时间戳或 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
}
/** 将业务时间按浏览器本地时区展示,保留毫秒精度。 */