How can I calculate the date of the next Friday?
You can calculate any next day dates using these this code below.
from datetime import datetime as dt
from datetime import timedelta
def get_weekday(day):
days = ["mon","tue","wed","thu","fri","sat","sun"]
return days.index(day) + 1
def get_next_dayofweek_datetime(date_time, dayofweek):
start_time_w = date_time.isoweekday()
target_w = get_weekday(dayofweek)
if start_time_w < target_w:
day_diff = target_w - start_time_w
else:
day_diff = 7 - (start_time_w - target_w)
return date_time + timedelta(days=day_diff)
def get_next_n_weekends_dates(date_time, weekday, n=2):
days_list = []
week_date_time = date_time
while n > 0:
week_date_time = get_next_dayofweek_datetime(week_date_time, weekday)
days_list.append(week_date_time)
n = n -1
return days_list
start_time = dt.strptime("2020-02-01 20:20:00", "%Y-%m-%d %H:%M:%S") # wednesday
print(get_next_dayofweek_datetime(start_time, "thu"))
print(get_next_dayofweek_datetime(start_time, "fri"))
print(get_next_dayofweek_datetime(start_time, "sat"))
print(get_next_dayofweek_datetime(start_time, "sun"))
print(get_next_dayofweek_datetime(start_time, "mon"))
print(get_next_dayofweek_datetime(start_time, "tue"))
print(get_next_dayofweek_datetime(start_time, "wed"))
print(get_next_dayofweek_datetime(start_time, "thu"))
print("get next two fridays or mote ")
print(get_next_n_weekends_dates(start_time, "fri", 2))
output:
2020-02-06 10:20:00
2020-02-07 10:20:00
2020-02-08 10:20:00
2020-02-02 10:20:00
2020-02-03 10:20:00
2020-02-04 10:20:00
2020-02-05 10:20:00
2020-02-06 10:20:00
get next two fridays or mote
[datetime.datetime(2020, 2, 7, 10, 20), datetime.datetime(2020, 2, 14, 10, 20)]