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。
More posts
什么是 UTC 时间?含义、偏移与转换详解纪元时间戳详解:Unix 时间、POSIX 时间与自 1970 年起的秒epoch 转换器指南:转换纪元时间、Unix 时间和时间戳日期转 epoch:把时间转换为 Unix 时间戳或纪元时间epoch 毫秒转日期:转换 13 位时间戳和 long 值当前 Unix 时间戳:纪元时钟、UTC 时间与实时 Unix 时间2026 年初的 Unix 时间戳:1767225600 详解JavaScript Date.now():获取与转换 Unix 时间戳毫秒 vs 秒:让每个应用都崩溃的单位混淆在数据库中存储时间戳:DATETIME vs INT vs BIGINT无需库的 JavaScript 时区正确日期格式化每个开发者都发布过的 7 个 Unix 时间戳 bug纪元时间详解:Unix 时间戳零是什么?