如何修复Python datetime传参前导零报错及获取星期几的问题
修复方案
错误原因
- 触发
SyntaxError的直接原因:Python 3 禁止十进制整数字面量携带前导零,代码中月份参数写的07不符合语法规范,直接去掉前导零写为7即可解决语法报错。 - 代码隐含的其他问题:
import datetime语句写在函数内部,函数外部创建datetime对象时无法访问到导入的模块,同时创建datetime对象的语法缺少模块调用层级,需要同步修正。
可直接运行的正确代码
import datetime def day_of_week(date): return datetime.datetime.strftime(date, '%A') date = datetime.datetime(2021, 7, 31) print(day_of_week(date))
运行后输出结果为:Saturday
优化写法(更简洁)
可以直接从datetime模块导入datetime类,减少重复代码:
from datetime import datetime def day_of_week(date): return date.strftime('%A') date = datetime(2021, 7, 31) print(day_of_week(date))
扩展:支持直接传入日期字符串
如果需要传入字符串格式的日期(如2021-07-31),可以调整函数逻辑先做格式转换:
from datetime import datetime def day_of_week(date_str, date_format="%Y-%m-%d"): date_obj = datetime.strptime(date_str, date_format) return date_obj.strftime("%A") print(day_of_week("2021-07-31"))
内容的提问来源于stack exchange,提问作者Muhammad Umar Bilal
相关产品推荐
相关产品推荐

