python时间转换核心用datetime模块,推荐strftime/strptime;时间戳转字符串需先fromtimestamp再格式化,字符串转时间戳则先strptime再timestamp;注意毫秒级时间戳要除1000,时区需显式处理。

Python 中时间戳和各种时间格式之间的转换,核心靠 time 和 datetime 两个模块,datetime 更推荐,尤其配合 strftime 和 strptime 使用灵活又直观。
时间戳转为可读时间字符串
时间戳本质是浮点数(秒级或毫秒级),需先转成 struct_time 或 datetime 对象,再格式化输出:
- 用
datetime.fromtimestamp()(本地时区)或datetime.utcfromtimestamp()(UTC)转成datetime对象 - 再调用
.strftime("%Y-%m-%d %H:%M:%S")按需格式化 - 注意:若时间戳是毫秒级(如 JavaScript 生成),要先除以 1000
示例:ts = 1717023600 # 秒级时间戳<br>dt = datetime.fromtimestamp(ts)<br>print(dt.strftime("%Y年%m月%d日 %H:%M")) # → 2024年05月30日 15:00
时间字符串转为时间戳
关键在先解析字符串为 datetime 对象,再转时间戳:
立即学习“Python免费学习笔记(深入)”;
- 用
datetime.strptime("2024-05-30 15:00", "%Y-%m-%d %H:%M")解析字符串 - 调用
.timestamp()得到本地时区对应的时间戳(float) - 若需 UTC 时间戳,用
datetime.strptime(...).replace(tzinfo=timezone.utc).timestamp()
常见格式码:%Y 四位年,%m 月,%d 日,%H 小时(24小时制),%M 分钟,%S 秒
datetime 对象与时间戳双向互转(无时区陷阱)
避免隐式时区转换出错,建议显式处理时区:
- 本地时间转时间戳:
dt_local.timestamp()(前提是dt_local带本地时区信息,或用astimezone()补全) - 时间戳转带时区的 datetime:
datetime.fromtimestamp(ts, tz=timezone.local()) - UTC 时间戳统一处理更安全:
datetime.utcfromtimestamp(ts).replace(tzinfo=timezone.utc)
小技巧:用 datetime.now().timestamp() 获取当前时间戳,time.time() 更轻量但返回 float 类型相同。
批量处理与常见格式速查
实际项目中常遇到 ISO 格式、中文日期、带毫秒等场景:
- ISO 格式(如
"2024-05-30T15:00:00.123"):直接用datetime.fromisoformat()(Python 3.7+),毫秒部分自动支持 - 含中文字符串(如
"2024年05月30日"):仍用strptime,格式写成"%Y年%m月%d日" - 想兼容多种格式?可封装 try/except 多次尝试,或用第三方库
dateutil.parser.parse()(自动推断,但略慢且需安装)
不复杂但容易忽略。










