日期转 epoch:把时间转换为 Unix 时间戳或纪元时间

学习如何把人类的日期和时间转换为纪元时间、Unix 时间戳秒、Unix 时间戳毫秒或 ISO 输出。涵盖时区选择、UTC 转换、API 负载和常见错误。

日期转 epoch 是什么意思

日期转 epoch 接受一个可读日期、时刻和时区,返回一个数字时间戳。该数字在各地都表示同一个瞬间。例如 2026-01-01 00:00:00 UTC 转换为 Unix 秒 1767225600。

时区是输入的一部分

像 2026-01-01 00:00 这样的本地时间,没有时区就不完整。UTC、纽约、洛杉矶、伦敦和东京的午夜是不同的瞬间,因此是不同的 epoch 时间戳。把时间转换为 Unix 时间戳前,务必先选择时区。

  • 2026-01-01 00:00 UTC = 1767225600 秒
  • 2026-01-01 00:00 America/New_York = 1767243600 秒
  • 2026-01-01 00:00 America/Los_Angeles = 1767254400 秒
  • 2026-01-01 00:00 Asia/Tokyo = 1767193200 秒

用秒还是毫秒?

把日期转换为 epoch 后,选择目标系统所需的单位。后端 API、Linux 命令、PHP、Python、Go 和许多 SQL 函数通常使用 Unix 秒。JavaScript Date、浏览器 API 和许多分析负载通常使用 Unix 毫秒。

  • Unix 秒:1767225600
  • Unix 毫秒:1767225600000
  • JavaScript:new Date('2026-01-01T00:00:00Z').getTime() 返回毫秒
  • JavaScript 秒:Math.floor(new Date('2026-01-01T00:00:00Z').getTime() / 1000)
  • SQL 通常通过 to_timestamp() 或 FROM_UNIXTIME() 接受秒

日期转 epoch 用在哪里

当系统需要一个数字时间边界而非格式化日期字符串时,日期转 epoch 就很有用。

  • 需要 expires_at 或 starts_at 值的 API 测试
  • 回填时间戳列的数据库迁移
  • 需要起止 epoch 边界的分析查询
  • 以数字方式保存运行时间的 cron、调度和队列任务
  • 带过期时间戳的签名 URL 和令牌

日期转 epoch 常见问题

如何把时间转换为 epoch 时间?
选择日期、时刻和时区,把该瞬间转换为 Unix 秒或毫秒。若缺少时区,结果可能相差数小时。
timestamp 转 epoch 和 date 转 epoch 一样吗?
通常一样。它指把可读的时间戳或日期时间字符串转换为 epoch 数字。
应该给 API 发送 epoch 秒还是毫秒?
遵循 API 文档。若写的是 Unix timestamp,通常指秒,但面向 JavaScript 的 API 可能期望毫秒。
为什么同一日期在不同时区得到不同的 epoch?
因为本地钟表时间只有附上时区后才能确定一个瞬间。2026-01-01 00:00 在 UTC 是 1767225600,但在纽约是 1767243600 —— 真实时间晚 5 小时。转换前请设置时区。