Skip to content

Date(/date 入口)

ts
import { dayjsInit, utcToApproximate, utcToDetailed } from '@tripo3d/utils/date';

// 业务侧需要在使用前手动调一次,以注册 utc / timezone 插件
dayjsInit();

/date 子入口提供三个工具:dayjsInit() 用来给 dayjs 注册 utctimezone 插件,配合两个常用的 UTC 字符串格式化函数 utcToDetailedutcToApproximate

没有默认导出

/date 子入口不导出 dayjs 实例本体。如果你想直接用 dayjs,请从 dayjs 包 import:

ts
import dayjs from 'dayjs';

dayjs@tripo3d/utils 的 peer dependency,宿主工程已经装了)

dayjsInit

函数签名说明
dayjsInit() => void给 dayjs 注册 utc + timezone 插件。业务侧需要在使用前手动调一次(早期推荐在 app 入口调)
ts
import { dayjsInit } from '@tripo3d/utils/date';

dayjsInit();

没有 zh-CN locale

/date 子入口只注册 utc / timezone 插件不预装中文 locale。需要中文展示请在宿主工程自行 dayjs.locale('zh-cn')

utcToDetailed / utcToApproximate

针对 Tripo 后端常用的 UTC 时间字符串/时间戳的两个预设格式化:

函数签名说明
utcToDetailed(utcTimeString: number | string) => string完整时间格式 YYYY-MM-DD HH:mm:ss,适合日志、详情页
utcToApproximate(utcTimeString: number) => string简短格式 MM-DD HH:mm,适合列表页摘要
ts
import { utcToApproximate, utcToDetailed } from '@tripo3d/utils/date';

utcToDetailed('2026-04-25T10:30:45Z');     // '2026-04-25 18:30:45'(本地时区)
utcToDetailed(1714040445000);              // 同上,接受 ms 时间戳
utcToApproximate(1714040445000);           // '04-25 18:30'

两个函数都按宿主本地时区展示——这是 dayjs 的默认行为。需要切换时区时直接用 dayjs API(前提是已经调过 dayjsInit()):

ts
import dayjs from 'dayjs';
import { dayjsInit } from '@tripo3d/utils/date';

dayjsInit(); // 必须先调,否则 .tz() 不可用

dayjs(1714040445000).tz('America/New_York').format('YYYY-MM-DD HH:mm');

已注册的插件清单(调用 dayjsInit() 之后)

插件用途
dayjs/plugin/utcdayjs.utc() / .utc() / .local() 等 UTC 互转 API
dayjs/plugin/timezonedayjs.tz() / .tz('Asia/Shanghai') 时区切换

需要更多插件(relativeTimeduration、locale 等)请在宿主工程自行 dayjs.extend(...)dayjs.locale(...),与本子入口的 dayjsInit() 调用顺序无关——dayjs 的 extend 是幂等的。

常见模式

ts
import dayjs from 'dayjs';
import { dayjsInit, utcToApproximate, utcToDetailed } from '@tripo3d/utils/date';

dayjsInit(); // app 入口调一次

// 列表展示
const rows = items.map(item => ({
  ...item,
  createdAtLabel: utcToApproximate(item.created_at),
}));

// 详情展示
const detail = utcToDetailed(item.created_at);

// 计算相对时间
const minutes = dayjs().diff(dayjs(item.created_at), 'minute');
const label = minutes < 60 ? `${minutes} 分钟前` : utcToApproximate(item.created_at);

下一步

基于 MIT 协议发布(内部使用)