Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 处理角落问题的有效方法是什么_Python - Fatal编程技术网

Python 处理角落问题的有效方法是什么

Python 处理角落问题的有效方法是什么,python,Python,我有一个每周运行的脚本。为此,我的一周从周二开始,周一结束(年初和年底除外)。下面是我写的代码: end_date = datetime.utcnow().date() idx = (end_date.weekday()) % 7 end_date = end_date - timedelta(idx) start_date = end_date - timedelta(6) 除了一年中的第一周和最后一周外,这一切都很正常 第一周应从01-01-2020(dd-mm-yyyy)开始,到06-0

我有一个每周运行的脚本。为此,我的一周从周二开始,周一结束(年初和年底除外)。下面是我写的代码:

end_date = datetime.utcnow().date()
idx = (end_date.weekday()) % 7
end_date = end_date - timedelta(idx)
start_date = end_date - timedelta(6)
除了一年中的第一周和最后一周外,这一切都很正常

第一周应从
01-01-2020
(dd-mm-yyyy)开始,到
06-01-2020
结束

类似的错误也会在今年的最后一周出现。是否可以对逻辑进行任何添加以捕获角落案例


编辑:如果我在上面运行,年初的开始日期将变为2019年12月31日。我希望它是01-01-2020。同样,对于今年的最后一周,开始时间=2020年12月29日,结束时间应为2020年12月31日。(但是,上面的代码给出了不同的结束日期)

您应该检查函数相对增量

from dateutil.relativedelta import relativedelta
date_end = date + relativedelta(days=7))
它自动添加或删除并处理拐角日期

在你的情况下,我认为这是最好的:

date_max = datetime.date(end_date.year, 1,1)
start_date = max(date_max, end_date - timedelta(6))
date_min = datetime.date(start_date.year+1,1,1)-relativedelta(days=1)
end_date = min(date_min, start_date+timedelta(6)

你到底有什么问题?如果您在撰写角落案例时遇到问题,那么是的,我们可以提供帮助。已回答。请勾选编辑。为什么不使用cronjobs来处理此问题?请您回答您的问题,以澄清您希望如何处理此案件?最重要的是,为什么这是一个角落的情况摆在首位?“从星期二开始到星期一结束”这条规则是一条完全有效的规则,适用于不同年份。添加额外的规则来分割新年的“周”首先引入了拐角案例,将两个部分周视为两周。请参见编辑并告诉我您的想法