我有两个日期,在这两个日期之间,我需要知道有多少个星期一到星期五要来(除了斯塔,太阳),每天都应该被计算在内
目前我在想:

import calendar
import datetime
start_date = datetime.datetime.strptime("01/01/2017",'%d/%m/%Y')
end_date = datetime.datetime.strptime("31/01/2017",'%d/%m/%Y')
week_arr = [0] * 7
calendar.day_name[start_date.weekday()] ## will give me name of day
"""
As I receive Monday I will increment week_arr[0] by 1, Tuesday
week_arr[1]+= 1,
"""

我不知道如何有效地做到这一点,这样我就不会使用太多的代码行(更少的if-else和for循环),这可能是熊猫的一些技巧。

最佳答案

此代码仍然使用for循环和if/else。

import datetime
import calendar

def weekday_count(start, end):
  start_date  = datetime.datetime.strptime(start, '%d/%m/%Y')
  end_date    = datetime.datetime.strptime(end, '%d/%m/%Y')
  week        = {}
  for i in range((end_date - start_date).days):
    day       = calendar.day_name[(start_date + datetime.timedelta(days=i+1)).weekday()]
    week[day] = week[day] + 1 if day in week else 1
  return week

print(weekday_count("01/01/2017", "31/01/2017"))

# prints result
# {'Monday': 5, 'Tuesday': 5, 'Friday': 4, 'Wednesday': 4, 'Thursday': 4, 'Sunday': 5, 'Saturday': 4}

关于python - 如何在Python中查找两个日期之间的星期一或其他工作日的数量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43692340/

10-10 10:09