日期格式转换器

概述

日期格式转换器接受任意日期字符串或时间戳输入,同时输出 10 种常用日期格式的对应值,包括 Unix 时间戳、ISO 8601、RFC 3339、RFC 7231、UTC、ISO 9075、MongoDB ObjectId、Excel 序列号以及自定义格式。它是处理不同数据库、API 或系统之间日期格式差异时的快速参考工具。

各格式的使用场景

格式示例值典型用途
ISO 86012024-12-19T10:30:45.123ZJSON API、数据库存储、国际化
ISO 90752024-12-19 10:30:45.123MySQL、PostgreSQL 查询
RFC 33392024-12-19T10:30:45+08:00互联网协议、OpenAPI 规范
RFC 7231Thu, 19 Dec 2024 10:30:45 GMTHTTP 头 Last-Modified、Expires
Unix 时间戳(秒)1703038245系统日志、缓存 TTL、Token 有效期
JavaScript 时间戳(毫秒)1703038245123Date.now()、前端时间比较
MongoDB ObjectId675436e50000000000000000从文档 ID 反查创建时间
Excel 序列号45644.4378Excel 导入导出、财务报表

时区处理的边界问题

工具基于 dayjs 解析输入,时区处理规则如下:

  • ISO 8601 / RFC 3339:若输入带有 +08:00Z 等时区后缀,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:ss2024年12月19日 10:30:45
  • ddd MMM D, YYYYThu Dec 19, 2024
  • X(Unix 秒时间戳)或 x(毫秒时间戳)

大写 YYYY 表示四位年份,小写 mm 表示分钟,MM 表示月份,HH 为 24 小时制,hh 为 12 小时制,区分大小写错误是自定义格式不符合预期的最常见原因。