时间戳(Unix 时间戳)是从 1970 年 1 月 1 日 00:00:00 UTC 起经过的秒数,与时区无关,同一时刻在全世界的时间戳都相同。下面说明代码写法。
用代码实现时间戳
下面是用 Python 实现的写法,可以按需要修改:
import time, datetime as dt
from zoneinfo import ZoneInfo
print(int(time.time())) # 当前秒级时间戳
print(dt.datetime.fromtimestamp(1794326400, ZoneInfo('Asia/Shanghai')))
print(int(dt.datetime(2026, 11, 11, tzinfo=ZoneInfo('Asia/Shanghai')).timestamp()))
示例
输入:北京时间 2024-02-29 12:00:00
转换结果:秒级 1709179200,毫秒级 1709179200000
说明:对应 UTC 时间 2024-02-29 04:00:00,北京时间比 UTC 早 8 小时。
核心要点
- 起点是 1970-01-01 00:00:00 UTC,称为 Unix 纪元
- 秒级时间戳目前是 10 位,毫秒级是 13 位
- 时间戳本身没有时区,转换成日期时才需要指定时区
- 北京时间 = UTC + 8 小时
- 32 位有符号整数存秒级时间戳会在 2038-01-19 03:14:07 UTC 溢出
规则说明
- 秒级 10 位,毫秒级 13 位,微秒级 16 位
- 时间戳 0 = 1970-01-01 08:00:00 北京时间
- 每天 86400 秒,不计闰秒
- 负数表示 1970 年以前
- 同一时刻在不同时区时间戳相同
实用技巧
- 数据库统一存 UTC 或时间戳
- 前后端约定好单位,接口文档写清楚
- 日志同时输出时间戳和 ISO 时间
- 64 位整数避免 2038 年问题
本站的时间戳转换工具可以直接在网页中使用,无需安装,适合快速得到和核对结果。
常见问题
【时间戳是 10 位还是 13 位?】10 位是秒,13 位是毫秒,转换前先确认单位。
【时间戳 0 是什么时间?】UTC 1970-01-01 00:00:00,即北京时间 1970-01-01 08:00:00。
【不同国家的时间戳一样吗?】同一时刻全世界的时间戳完全相同,差别只在显示成本地时间时。
文中示例可以在本站对应工具中核对。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。