正在加载文章...
分享这篇文章
继续阅读
处理时间的难点不在“秒数怎么加减”,而在时区、夏令时、闰秒和历史规则。Unix 时间戳提供了一个稳定基础:用一个整数表示某个 UTC 时刻。
Unix 时间戳表示:自世界协调时(UTC)1970 年 1 月 1 日 00:00:00 起经过的秒数。通常不计入闰秒。
这个整数有几个工程优势:
数字 1700000000 在东京、伦敦和纽约都指向同一个时刻。不同地区看到的本地时间不同,只是格式化结果不同。
理解几个概念:
Asia/Shanghai、America/New_York。它包含历史规则和夏令时变化。IANA 时区数据库(tzdata)维护这些规则。应用依赖时区转换时,应确保运行环境及时更新 tzdata。
闰秒用于让 UTC 和地球自转保持接近。有时 UTC 会出现 23:59:60 这样的特殊秒。
Unix 时间通常不计入闰秒,所以系统需要选择处理方式:
不同基础设施的策略可能不同。涉及金融、日志排序或跨系统对账时,要确认时间源和 NTP 策略。
2026-05-14 10:30 如果没有时区,无法判断它指向哪个 UTC 时刻。America/New_York 这类标识,不要只保存 UTC-5。date-fns 或 luxon,Python 3.9+ 可用 zoneinfo。Unix 时间戳适合表示一个确定时刻,时区适合展示和日程语义。存储用 UTC,展示用用户时区,规则交给 IANA 时区数据库和成熟库处理。