time.strftime()不能直接转换时间戳,必须先用time.localtime()或time.gmtime()将时间戳转为struct_time,再格式化;错误示例:直接传时间戳会报TypeError。

直接用 time.strftime() 不能转换时间戳,它只接受 struct_time 对象。必须先用 time.localtime() 或 time.gmtime() 把时间戳转成 struct_time,再格式化。
正确步骤:时间戳 → struct_time → 字符串
这是标准三步法,缺一不可:
- time.time() 获取当前时间戳(浮点数,单位秒)
-
time.localtime(时间戳) 转成本地时区的 struct_time;用
time.gmtime()可得 UTC 时间 - time.strftime(格式字符串, struct_time) 按指定模式生成可读字符串
常用格式化代码示例
假设 ts = 1717023456.789 是一个时间戳:
import time<br>ts = 1717023456.789<br>local_struct = time.localtime(ts)<br>readable = time.strftime("%Y-%m-%d %H:%M:%S", local_struct)<br>print(readable) # 输出:2024-05-30 14:57:36
其他实用格式:
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
-
"%Y年%m月%d日 %H时%M分%S秒"→ 2024年05月30日 14时57分36秒 -
"%A, %B %d, %Y"→ Thursday, May 30, 2024(需系统 locale 支持中文会显示英文) -
"%Y-%m-%d %a %H:%M"→ 2024-05-30 Thu 14:57
注意时区和本地化问题
time.localtime() 依赖系统本地时区设置,结果不是绝对时间;若需跨时区稳定输出,推荐改用 datetime 模块配合 zoneinfo(Python 3.9+):
from datetime import datetime<br>from zoneinfo import ZoneInfo<br>dt = datetime.fromtimestamp(ts, tz=ZoneInfo("Asia/Shanghai"))<br>print(dt.strftime("%Y-%m-%d %H:%M:%S"))
而纯 time 模块不支持显式指定时区,容易在服务器部署时出错。
常见错误提醒
以下写法是错的,会报 TypeError:
-
time.strftime("%Y-%m-%d", 1717023456)—— 第二个参数必须是 struct_time,不是数字 -
time.strftime("%Y-%m-%d", time.time())——time.time()返回的是浮点数,不是 struct_time - 忘记调用
localtime()或gmtime()直接传时间戳
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










