Python月份数字转月份名报int无strftime属性错误如何修复
错误原因
触发报错的核心是类型不匹配:
datetime.now().month返回值是整数类型(例如10月返回整数值10),仅代表月份的数字编号,不是完整的日期对象strftime()是datetime日期对象的内置方法,整数对象不存在该属性,因此抛出属性错误。
修复方案
根据使用场景二选一即可:
方案1:直接对日期对象做格式化(代码最简洁)
不需要提前提取.month属性,直接在datetime.now()生成的日期实例上调用格式化方法:
from datetime import datetime # 格式化符%B对应完整月份名称 month_name = datetime.now().strftime("%B")
方法返回值直接为目标月份名称:英文环境下返回如October,已配置中文本地化的环境会返回十月。
方案2:整数月份值转名称(适配已拿到月份数字的场景)
如果代码逻辑中已经拿到了整数格式的月份编号,可以用标准库calendar内置的月份名称序列做映射转换:
import calendar from datetime import datetime month_num = datetime.now().month # 得到整数类型的月份编号 month_name = calendar.month_name[month_num]
注意calendar.month_name的索引从1开始对应1月,和月份数字的1-12取值范围完全匹配,不需要额外做索引偏移计算。
内容的提问来源于stack exchange,提问作者patrice72
相关产品推荐
相关产品推荐

