将天数添加到日期,然后减去指定的天数(如果经过这些天数)
Adding days to a date, then substracting specified days if it passes through them
我想知道是否可以将一个日期加上 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.
一点展望:pandas
date_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)
我想知道是否可以将一个日期加上 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.
一点展望:pandas
date_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)