繁体   English   中英

如果在批处理文件中是星期日或星期六,如何更改日期

[英]how to change the date if it is sunday or saturday in batch file

我必须在命令行中运行 python 脚本并将日期作为参数传递,下面是我运行日期的命令

parser = argparse.ArgumentParser()
parser.add_argument('date')
tdate= parser.parse_args().date

我想更改它以检查它是星期天还是星期六。 如果是星期六,tdate 应该是 tdate-1,如果是星期天,它应该是 tdate-2。

我试图在 python 中获取 weekno,如果它是 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

我在这段代码中遗漏了一些东西。 谁能帮帮我吗?

如果我理解正确,您希望它是这样的,如果当天是星期六或星期日,那么作为命令行参数传递的输入日期应该是日期 - 1 天日期 - 2 天。

因此,如果今天的日期在周一至周五 (11/23/2022) 过去,它将按原样返回日期,但如果同一日期在周六过去,它将返回 11/22/2022。

要执行从当天减去天数的操作,您需要使用 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 进行测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM