Python中时间转时间戳核心用datetime或time模块:字符串需先strptime解析再timestamp();datetime对象直接调用timestamp();UTC时间须明确时区以避免偏差。

Python 中把时间转换为时间戳,核心是用 time 或 datetime 模块,关键看你的“时间”是什么格式:是字符串、datetime 对象,还是 struct_time。
从字符串时间转时间戳(常用)
比如你有一个日期时间字符串 "2024-05-20 14:30:00",需要先解析成 datetime 对象,再转时间戳:
- 用
datetime.strptime()解析字符串 - 调用
.timestamp()方法(推荐,自动处理时区)
示例:
from datetime import datetimedt_str = "2024-05-20 14:30:00" dt = datetime.strptime(dt_str, "%Y-%m-%d %H:%M:%S") timestamp = dt.timestamp() # 返回浮点数,单位秒 print(timestamp) # 如:1716215400.0
从 datetime 对象转时间戳
如果你已有 datetime 对象(比如 datetime.now()),直接调用 .timestamp() 即可:
立即学习“Python免费学习笔记(深入)”;
- 注意:本地时间对象默认按系统时区转;若为
timezone-aware(带时区),结果更准确 - 不带时区的对象(naive)会被当作本地时间处理
示例:
from datetime import datetimenow = datetime.now() ts = now.timestamp() print(ts)
用 time 模块(兼容旧代码)
适合已知是本地时间且格式较固定的情况:
- 先用
time.strptime()得到struct_time - 再用
time.mktime()转为本地时间戳(仅适用于本地时区) - ⚠️ 不推荐用于 UTC 时间或跨时区场景
示例:
import timet_str = "2024-05-20 14:30:00" t_struct = time.strptime(t_str, "%Y-%m-%d %H:%M:%S") ts = time.mktime(t_struct) # 本地时间戳 print(ts)
UTC 时间转时间戳(避免时区坑)
如果原始时间是 UTC 字符串(如 "2024-05-20T14:30:00Z"),建议明确指定时区:
- 用
datetime.fromisoformat()(Python 3.7+)配合timezone.utc - 或用
dateutil.parser.parse()(需安装python-dateutil)
示例(标准 UTC ISO 格式):
from datetime import datetime, timezoneutc_str = "2024-05-20T14:30:00Z" dt_utc = datetime.fromisoformat(utc_str.replace("Z", "+00:00")) ts = dt_utc.timestamp() # 正确转为 UTC 对应的 Unix 时间戳 print(ts)
基本上就这些。优先用 datetime.timestamp(),注意时区含义,字符串记得配对正确的格式码。不复杂但容易忽略时区,一错就差 8 小时 ?











