我需要一个函数来计算两个日期之间(周末除外)之间的时间(以秒为单位),其工作方式如下:
# friday 9 PM
start_date = datetime.datetime(2015, 9, 18, 21, 0, 0)
# monday 3 AM
end_date = datetime.datetime(2015, 9, 21, 3, 0, 0)
# should return 6 hours
time = time_between_two_dates_except_weekends(start_date, end_date)
Run Code Online (Sandbox Code Playgroud)
我实现了自己的功能,这是可行的,但它似乎不必要地庞大和复杂。我认为它可以更简单。
import datetime
from dateutil.relativedelta import relativedelta
from dateutil.rrule import DAILY, rrule
def time_between_two_dates_except_weekends(start_date, end_date):
WEEKEND_DAYS = [5, 6]
result = datetime.timedelta()
if all([start_date.year == end_date.year, start_date.month == end_date.month, start_date.day == end_date.day]):
result += datetime.timedelta(seconds = (end_date-start_date).seconds )
return result
day_after_start_date = start_date + relativedelta(days=1)
day_after_start_date …Run Code Online (Sandbox Code Playgroud)