是否有任何python函数可以从日期范围推断出星期五或星期四的数量?我搜索谷歌,我发现许多方法,通常使用天数除以7概念,但它不会给你准确的日子。例如,从2016年11月1日到2016年11月12日,有两个星期五和两个星期四,因此减法的结果应为8。
答案 0 :(得分:0)
使用date
模块中的datetime
对象。
from datetime import date, timedelta
curr = date(2016, 11, 1)
end = date(2016, 11, 12)
step = timedelta(1)
num_thur_fri = 0
while curr <= end:
if curr.weekday() in [3,2]: #Friday and thursday
num_thur_fri += 1
curr += step
print(num_thur_fri)
更多阅读:https://docs.python.org/2/library/datetime.html#module-datetime
@brianpck是对的,这是一个非常天真的解决方案。这是一个更好的
from datetime import date
begin = date(2016, 11, 1)
end = date(2016, 11, 12)
diff = (begin-end).days
day_of_week = begin.weekday()
num_thur_fri = 2*(diff//7)
for i in range(diff%7):
if day_of_week in [2,3]:
num_thur_fri += 1
day_of_week = (day_of_week +1) %7
答案 1 :(得分:0)
这是一种更简单,更快速的方法,可以长时间计算这个数字。
首先,您必须计算两个datetime
之间的天数。然后你可以将7除以得到整个周的数量并乘以2来得到星期四和星期五的数量。最后一步是以7为模来获得尾部的天数,然后计算其中有多少是星期四或星期五:这最后一步是唯一一个实际需要知道它是哪个工作日的。
完整的功能是:
from datetime import datetime, timedelta
def thursday_fridays_between(date1, date2):
days_between = abs((date2 - date1).days)
thursday_friday = days_between // 7 * 2
thursday_friday += sum((a + timedelta(i)).weekday() in (3, 2) for i in range(days_between % 7 + 1))
return thursday_friday
可以按如下方式使用:
>>> a = datetime(2016, 11, 1)
>>> b = datetime(2016, 11, 12)
>>> thursday_fridays_between(a, b)
4
答案 2 :(得分:0)
我想出一个方法,如果我错了,请纠正我。
这是我的代码
$final[0].'#text'