Python处理时间戳需区分秒级/毫秒级,用time.time()或datetime.timestamp()获取,datetime.fromtimestamp()转本地时间、utcfromtimestamp()转UTC时间,strptime()解析字符串,zoneinfo模块推荐用于跨时区处理。

Python 中处理时间戳的核心是 datetime 和 time 模块,关键在于分清“时间戳(timestamp)”是秒级还是毫秒级,并明确目标格式(字符串、datetime 对象或其它时区时间)。
获取当前时间戳(秒级/毫秒级)
系统默认返回的是自 1970-01-01 UTC 起的秒数(float 类型),毫秒级需乘以 1000:
-
秒级时间戳:用
time.time()或int(datetime.now().timestamp()) -
毫秒级时间戳:
int(time.time() * 1000)或int(datetime.now().timestamp() * 1000)
时间戳转为可读时间(datetime 或字符串)
用 datetime.fromtimestamp() 转成本地时区 datetime 对象;用 datetime.utcfromtimestamp() 转成 UTC 时间;再用 .strftime() 格式化为字符串:
- 本地时间:
datetime.fromtimestamp(1717027200).strftime('%Y-%m-%d %H:%M:%S')→'2024-05-31 00:00:00' - UTC 时间:
datetime.utcfromtimestamp(1717027200).strftime('%Y-%m-%d %H:%M:%S')→'2024-05-30 16:00:00' - 注意:若原始时间戳是毫秒级,先除以 1000 再传入
字符串转时间戳(支持多种格式)
先用 datetime.strptime() 解析字符串为 datetime 对象,再调用 .timestamp() 方法:
立即学习“Python免费学习笔记(深入)”;
dt = datetime.strptime('2024-05-31 10:30:00', '%Y-%m-%d %H:%M:%S')-
ts = int(dt.timestamp())→ 得到本地时区对应的秒级时间戳 - 如需强制按 UTC 解析,可用
datetime.strptime(...).replace(tzinfo=timezone.utc).timestamp()
跨时区时间戳处理(推荐用 zoneinfo)
Python 3.9+ 推荐使用 zoneinfo 模块避免 pytz 的复杂性:
- 将时间戳转为北京时间:
datetime.fromtimestamp(ts, ZoneInfo("Asia/Shanghai")) - 将字符串按东京时间解析再转时间戳:
dt = datetime.strptime('2024-05-31 12:00', '%Y-%m-%d %H:%M').replace(tzinfo=ZoneInfo("Asia/Tokyo"))→dt.timestamp() - 未指定时区的时间戳默认按本地系统时区解释,易出错,建议显式声明










