时间戳结果是怎么得到的

50 0

时间戳(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。

【不同国家的时间戳一样吗?】同一时刻全世界的时间戳完全相同,差别只在显示成本地时间时。

文中示例可以在本站对应工具中核对。

署名:123问编辑部 · 最近修订:2026-11-11 · 已按编辑与审核说明检查;内容仅供参考,不构成医疗、法律或投资建议。发现错误可查看纠错方式。

标签: 时间戳 实用工具

抱歉,评论功能暂时关闭!