时间戳(Unix 时间戳)是从 1970 年 1 月 1 日 00:00:00 UTC 起经过的秒数,与时区无关,同一时刻在全世界的时间戳都相同。下面说明背后的原理。
时间戳结果是怎么得到的
把日期转为时间戳:先把本地时间换算为 UTC,再计算与 1970-01-01 00:00:00 UTC 相差的秒数。把时间戳转为日期:用秒数加上纪元得到 UTC 时间,再按目标时区加上偏移。Unix 时间不计闰秒,每天固定按 86400 秒计算。
示例
输入:北京时间 2026-01-01 00:00:00
转换结果:秒级 1767196800,毫秒级 1767196800000
说明:对应 UTC 时间 2025-12-31 16:00:00,北京时间比 UTC 早 8 小时。
注意事项
- 先确认单位,把毫秒当秒会得到 5 万多年后的日期
- 数据库字段注意是 UTC 还是本地时间
- JavaScript 的 Date.now() 返回毫秒,PHP 的 time() 返回秒
- 32 位系统存时间戳有 2038 年问题,应使用 64 位整数
- 跨时区系统统一存 UTC,显示时再转换
常见误区
- 误区:时间戳和时区有关——时间戳是绝对时刻,与时区无关
- 误区:13 位时间戳解析出来年份很大是工具错了——是把毫秒当成了秒
- 误区:北京时间 0 点的时间戳能被 86400 整除——能整除的是 UTC 0 点
- 误区:Unix 时间包含闰秒——不包含
实用技巧
- 数据库统一存 UTC 或时间戳
- 前后端约定好单位,接口文档写清楚
- 日志同时输出时间戳和 ISO 时间
- 64 位整数避免 2038 年问题
本站的时间戳转换工具可以直接在网页中使用,无需安装,适合快速得到和核对结果。
常见问题
【时间戳是 10 位还是 13 位?】10 位是秒,13 位是毫秒,转换前先确认单位。
【时间戳 0 是什么时间?】UTC 1970-01-01 00:00:00,即北京时间 1970-01-01 08:00:00。
【不同国家的时间戳一样吗?】同一时刻全世界的时间戳完全相同,差别只在显示成本地时间时。
文中示例可以在本站对应工具中核对。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。