Unix 时间转日期:把 Unix 时间戳转换为可读时间

把 Unix 时间转换为日期格式的实用指南:UTC、本地时区、ISO 8601、数据库 datetime 和可读输出。涵盖 Unix 时间戳转日期、Linux 时间转日期,以及常见的秒与毫秒错误。

把 Unix 时间转为日期是什么意思

Unix 时间是一个数字,计数自 1970 年 1 月 1 日 00:00:00 UTC 起经过的时间。把 Unix 时间转为日期,就是把这个数字变成日历日期、钟表时间和时区感知的显示。时间戳本身与时区无关;UTC 还是本地时间只影响该瞬间如何向人显示。

快速转换规则

先识别单位。现代 10 位的 Unix 时间戳通常是秒,13 位通常是毫秒。JavaScript Date 期望毫秒,而 Linux、Python、PHP、Go 和许多数据库函数通常以秒工作。

  • Unix seconds to JavaScript Date: new Date(seconds * 1000)
  • Unix milliseconds to JavaScript Date: new Date(milliseconds)
  • Linux command: date -u -d @1700000000
  • Python UTC datetime: datetime.fromtimestamp(seconds, tz=timezone.utc)
  • PostgreSQL: SELECT to_timestamp(1700000000)

Unix 时间戳转日期示例

示例是最快的方式来核对一个值是秒、毫秒还是其他单位。如果转换出的年份接近 1970,你很可能把秒传给了期望毫秒的 API。如果年份非常遥远,你很可能把毫秒传给了期望秒的 API。

  • 自纪元起 0 秒 = 1970-01-01 00:00:00 UTC
  • 自纪元起 1700000000 秒 = 2023-11-14 22:13:20 UTC
  • 自纪元起 1700000000000 毫秒 = 2023-11-14 22:13:20 UTC
  • 自纪元起 -86400 秒 = 1969-12-31 00:00:00 UTC
  • 自纪元起 1767225600 秒 = 2026-01-01 00:00:00 UTC

UTC 日期 vs 本地日期

Unix 时间戳表示一个精确的瞬间。UTC 是日志、API 和调试最安全的基准。本地时间适合用户界面、日历和报表。同一个 Unix 时间戳在纽约、伦敦、上海和东京可能显示为不同的日历日期,尤其在 UTC 午夜附近。

  • 跨服务器或地区比较事件时使用 UTC
  • 在应用中显示日期时使用用户的 IANA 时区
  • 需要机器可读的 UTC 输出时使用带 Z 的 ISO 8601
  • 当本地日历日期重要时使用时区转换器

Unix 时间转日期常见问题

如何把 Unix 时间转换为日期?
识别值是秒还是毫秒,再用时间戳转换器或语言 API 转换。在 JavaScript 中,把值传给 new Date() 前先把秒乘以 1000。
Linux 时间和 Unix 时间一样吗?
对常规的时间戳转换而言,是的。Linux 时间就是 Unix 时间:自 1970-01-01 00:00:00 UTC 起的秒。
为什么我的 Unix 时间戳转换成了 1970 年?
这通常意味着把秒的时间戳当作了毫秒。用 JavaScript Date 转换前,把 10 位的秒值乘以 1000。
如何在 Excel 中把 Unix 时间转换为日期?
Excel 没有 Unix 纪元,所以把秒值除以 86400,再加上 1970 年的日期序列号:=A1/86400 + DATE(1970,1,1),然后把单元格格式设为日期。对毫秒则除以 86400000。