I have a range of dates
ie 2020/6/7 - 2020/6/10 and then do the following
- Add 20 calendar days
- Checks whether it is a weekend or a public holiday
- If it fall on a weekend or public holiday, add days until it falls on the next nearest business day
The date doesn't update after exiting the loop statement.
twentycalender_after = []
public_holiday = []
start_dt = datetime.date(2020, 6, 6)
end_dt = datetime.date(2020, 6, 10)
mydates = pd.date_range(start_dt, end_dt)
for da_te in mydates:
twentycalender_after = da_te + datetime.timedelta(20)
print(twentycalender_after)
print(twentycalender_after.isoweekday())
while twentycalender_after.isoweekday() >5:
twentycalender_after += datetime.timedelta(1)
print(twentycalender_after) ## HERE
print(twentycalender_after.isoweekday()) ## HERE
print('over')
Output is as follows:
2020-06-26 00:00:00
5
2020-06-26 00:00:00
5
over
2020-06-27 00:00:00
6
2020-06-29 00:00:00
1
over
2020-06-28 00:00:00
7
2020-06-29 00:00:00
1
over
2020-06-29 00:00:00
1
2020-06-29 00:00:00
1
over
2020-06-30 00:00:00
2
2020-06-30 00:00:00
2
over
However when I indent the lines marked HERE:
for da_te in mydates:
twentycalender_after = da_te + datetime.timedelta(20)
print(twentycalender_after)
print(twentycalender_after.isoweekday())
while twentycalender_after.isoweekday() >5:
twentycalender_after += datetime.timedelta(1)
print(twentycalender_after) ## HERE
print(twentycalender_after.isoweekday()) ## HERE
print('over')
The output(looks fine) is
2020-06-26 00:00:00
5
over
2020-06-27 00:00:00
6
2020-06-28 00:00:00
7
2020-06-29 00:00:00
1
over
2020-06-28 00:00:00
7
2020-06-29 00:00:00
1
over
2020-06-29 00:00:00
1
over
2020-06-30 00:00:00
2
over