我必须在命令行中运行python脚本,并将日期作为参数传递,下面是运行日期的命令
parser = argparse.ArgumentParser()
parser.add_argument('date')
tdate= parser.parse_args().date我想换一下这个,看看是星期天还是星期六。如果是星期六,日期应该是日期-1,如果是星期天,则应该是日期-2。
我试着在蟒蛇中得到周末--如果是5,我会把它当作星期六,如果是6,那就是周日。
#this code is in python getting today() weekday()
weekno = datetime.datetime.today().weekday()
if weekno==5:
tdate= parser.parse_args().date-1
elif weekno==6:
tdate= parser.parse_args().date-2
else:
tdate= parser.parse_args().date我在这段代码中遗漏了一些东西。有人能帮帮我吗?
发布于 2022-11-23 20:43:34
如果我的理解是正确的,您希望这样,如果当前的日期是星期六或星期日,那么作为命令行参数传递的输入日期应该是date -1 day或date -2 days.。
因此,如果今天的日期在星期一-星期五通过(11/23/2022),它将返回原来的日期,但如果在星期六通过同样的日期,它将返回11/22/2022。
要执行从当前日期减去天数的操作,您需要use time delta。
这是我的解决方案,基于我对你要求的假设。
import argparse
from datetime import datetime, timedelta
parser = argparse.ArgumentParser()
parser.add_argument('date')
passed_in_date = parser.parse_args().date
tdate = datetime.strptime(passed_in_date, "%m/%d/%Y")
weekno = datetime.today().weekday()
print(f"weekno of today is: {weekno}")
if weekno==5:
tdate = tdate - timedelta(days=1)
elif weekno==6:
tdate = tdate - timedelta(days=2)
print(tdate.date())OutPut
#running on a Wednesday (for example) date returns same as passed
python .\date.py 11/26/2022
weekno of today is: 2
2022-11-26
#example for testing if running on a sunday
python .\date.py 11/23/2022
weekno of today is: 6
2022-11-21如果您希望看到日期的更改,只需手动将weekno设置为5或6进行测试。
https://stackoverflow.com/questions/74551335
复制相似问题