日期格式转换器接受任意日期字符串或时间戳输入,同时输出 10 种常用日期格式的对应值,包括 Unix 时间戳、ISO 8601、RFC 3339、RFC 7231、UTC、ISO 9075、MongoDB ObjectId、Excel 序列号以及自定义格式。它是处理不同数据库、API 或系统之间日期格式差异时的快速参考工具。
各格式的使用场景
| 格式 | 示例值 | 典型用途 |
|---|---|---|
| ISO 8601 | 2024-12-19T10:30:45.123Z | JSON API、数据库存储、国际化 |
| ISO 9075 | 2024-12-19 10:30:45.123 | MySQL、PostgreSQL 查询 |
| RFC 3339 | 2024-12-19T10:30:45+08:00 | 互联网协议、OpenAPI 规范 |
| RFC 7231 | Thu, 19 Dec 2024 10:30:45 GMT | HTTP 头 Last-Modified、Expires |
| Unix 时间戳(秒) | 1703038245 | 系统日志、缓存 TTL、Token 有效期 |
| JavaScript 时间戳(毫秒) | 1703038245123 | Date.now()、前端时间比较 |
| MongoDB ObjectId | 675436e50000000000000000 | 从文档 ID 反查创建时间 |
| Excel 序列号 | 45644.4378 | Excel 导入导出、财务报表 |
时区处理的边界问题
工具基于 dayjs 解析输入,时区处理规则如下:
- ISO 8601 / RFC 3339:若输入带有
+08:00或Z等时区后缀,dayjs 会保留原始时区信息,输出的 RFC 3339 结果会正确携带偏移量 - 本地格式:
baseDate.toString()输出浏览器当前系统时区的本地表示,在不同时区的机器上结果不同 - ISO 9075 / RFC 7231:使用本地时区格式化,跨时区共享时需注意这一差异
- Unix 时间戳 / UTC:始终为 UTC,无时区歧义,是跨系统传递时间的最安全格式
夏令时边界:若输入时间落在夏令时切换点(如欧美秋冬调整日的 2:00 AM),部分格式的转换结果可能出现重叠或跳过,这是时区规范本身的特性,工具按标准行为处理。
MongoDB ObjectId 的时间戳提取
ObjectId 前 8 位十六进制对应 Unix 时间戳(秒),工具提取这 8 位后补 16 个零生成完整的 24 位 ObjectId 表示(后 16 位为占位符)。反向操作同样支持:若输入一个 ObjectId 字符串,dayjs 可以通过 parseInt(objectId.substring(0, 8), 16) 推算出文档的创建时间。
自定义格式的 dayjs 语法
工具支持通过自定义格式字段输入 dayjs 格式模式,例如:
YYYY年MM月DD日 HH:mm:ss→2024年12月19日 10:30:45ddd MMM D, YYYY→Thu Dec 19, 2024X(Unix 秒时间戳)或x(毫秒时间戳)
大写 YYYY 表示四位年份,小写 mm 表示分钟,MM 表示月份,HH 为 24 小时制,hh 为 12 小时制,区分大小写错误是自定义格式不符合预期的最常见原因。