python时间戳与字符串互转首选datetime模块,支持时区、可读性强;时间戳转字符串用fromtimestamp()或utcfromtimestamp(),字符串转时间戳用strptime()配合timestamp(),毫秒需先除1000,推荐显式绑定时区确保跨环境一致。

Python中时间戳与字符串格式互转,核心靠time和datetime两个模块,datetime更推荐——它支持时区、可读性强、方法直观。
时间戳转为可读时间字符串
时间戳本质是自1970-01-01 00:00:00 UTC起的秒数(或毫秒)。用datetime.fromtimestamp()转本地时间,datetime.utcfromtimestamp()转UTC时间:
- 默认转成本地时区:
datetime.fromtimestamp(1717028400).strftime('%Y-%m-%d %H:%M:%S')→'2024-05-30 16:20:00' - 明确转UTC:
datetime.utcfromtimestamp(1717028400).strftime('%Y-%m-%d %H:%M:%S')→'2024-05-30 08:20:00' - 若时间戳是毫秒级(如JavaScript常用),先除以1000:
datetime.fromtimestamp(1717028400000 / 1000)
时间字符串转为时间戳
先用strptime()解析字符串成datetime对象,再用timestamp()转时间戳。注意:该方法返回的是本地时区的时间戳(含夏令时影响):
dt = datetime.strptime('2024-05-30 16:20:00', '%Y-%m-%d %H:%M:%S')-
timestamp = int(dt.timestamp())→ 得到整数秒级时间戳 - 若需UTC时间戳,用
calendar.timegm(dt.utctimetuple())替代timestamp()
带时区的时间戳处理(避免踩坑)
不指定时区直接转时间戳,容易因系统本地时区导致结果不一致。安全做法是显式绑定时区:
立即学习“Python免费学习笔记(深入)”;
- 用
zoneinfo(Python 3.9+):from zoneinfo import ZoneInfo - 本地时间+时区:
dt = datetime(2024, 5, 30, 16, 20, 0, tzinfo=ZoneInfo('Asia/Shanghai')) - 再调
dt.timestamp(),结果准确且跨环境一致 - 旧版本可用
pytz,但注意pytz.localize()不能用于已有时区的对象
快速格式化常用时间字符串
不用硬记格式码,记住几个高频组合即可:
-
'%Y-%m-%d'→'2024-05-30' -
'%Y-%m-%d %H:%M:%S'→'2024-05-30 16:20:00' -
'%Y%m%d_%H%M%S'→'20240530_162000'(适合文件名) -
'%a, %d %b %Y %H:%M:%S %z'→ 符合RFC 2822标准(如邮件头)
掌握这四类操作,日常时间格式转换基本全覆盖。关键是分清“有没有时区”“用本地还是UTC”“秒还是毫秒”,其余都是组合调用。










