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

ff29svar  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(255)

我必须在命令行中运行一个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

我在这个代码中遗漏了一些东西。有人能帮助我吗?

djp7away

djp7away1#

如果我没理解错的话,您希望当前日期是星期六或星期日,那么作为命令行参数传递的输入日期应该是date - 1 daydate - 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())
输出
#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进行测试。

相关问题