如何在Python脚本中根据周六周日调整传入的日期参数?
解决命令行传入日期的周末调整问题
你的代码存在两个核心问题:
- 错误使用了
datetime.datetime.today().weekday(),获取的是当天的星期数,而非你传入的目标日期的星期数 - 直接对字符串类型的日期做减法运算(
date-1),字符串不支持这种数值操作,必须先转为日期对象
以下是修正后的完整代码:
import argparse from datetime import datetime, timedelta parser = argparse.ArgumentParser() parser.add_argument('date', help='传入的日期格式需为YYYY-MM-DD') args = parser.parse_args() # 将传入的字符串日期转为datetime对象 try: tdate = datetime.strptime(args.date, '%Y-%m-%d') except ValueError: print("错误:日期格式不正确,请使用YYYY-MM-DD格式") exit(1) # 获取传入日期的星期数(0=周一,5=周六,6=周日) weekno = tdate.weekday() # 根据星期数调整日期 if weekno == 5: # 周六 tdate -= timedelta(days=1) elif weekno == 6: # 周日 tdate -= timedelta(days=2) # 若需要将调整后的日期转回字符串格式,可使用以下代码 # tdate_str = tdate.strftime('%Y-%m-%d') # print(tdate_str)
关键说明:
- 使用
datetime.strptime()将传入的字符串日期转为可操作的datetime对象,指定格式%Y-%m-%d确保日期解析正确 - 通过
tdate.weekday()获取传入日期的星期数,而非当天的 - 用
timedelta(days=N)实现日期的加减操作,这是Python处理日期偏移的标准方式 - 增加了异常捕获,处理用户传入错误日期格式的情况
内容的提问来源于stack exchange,提问作者unicorn
相关产品推荐
相关产品推荐

