将天添加到日期中,然后减去经过指定日期的指定天



我想知道是否可以在一个日期上添加7天,如果它落在我之前指定的日期上,它会减去它落在的日期数量。这是我的尝试,我似乎无法成功:

from datetime import date, timedelta
days_to_add = 11
start = date(2020, 1, 1)
dates_to_skip = [(2020, 1, 6), (2020, 1, 7), (2020, 1, 14)]
days_skip = 0
x = 0
for days in days_to_add:
while x < days_to_add:
start += timedelta(days=1)
x += 1
if start == dates_to_skip:
days_skip += 1
result = start - days_skip
print(str(result))

稍微短一点:您可以按照如下去除while循环

from datetime import date, timedelta
start = date(2020, 1, 1)
days_to_add = 11
dates_to_skip = [date(2020, 1, 6), date(2020, 1, 7), date(2020, 1, 14)]
skipped = 0
for days_add in range(days_to_add+1):
if start + timedelta(days=days_add) in dates_to_skip:
skipped += 1  
print(f"skipped {skipped} days between {start} and {start+timedelta(days=days_to_add)}.")
# skipped 2 days between 2020-01-01 and 2020-01-12.

展望一下:如果你想了解以下内容,pandasdate_range可能会很有用:

import pandas as pd
# create a date range with all dates, including the ones to skip:
dr = pd.date_range(start, periods=days_to_add+1)
# select only the dates that are not in dates_to_skip:
dr = dr[~dr.isin(dates_to_skip)]
print(dr)
# DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04',
#                '2020-01-05', '2020-01-08', '2020-01-09', '2020-01-10',
#                '2020-01-11', '2020-01-12'],
#               dtype='datetime64[ns]', freq=None)

最新更新