python - 将日期添加到日期,然后减去指定的日期(如果它经过它们)
问题描述
我想知道是否可以在日期上增加 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)
推荐阅读
- python - 根据多个条件删除 pandas 数据框中的行(一个是正则表达式)
- javascript - 使用 html 编辑器将 sharepoint excel 文件中的数据读取到 Servicenow 知识文章
- python - 根据位置获取字符串中字符的单词
- shell - 将输出流式传输到文件不起作用
- php - 如何修复 PHP 启动:无法加载动态库?
- sql - SQL Server - 从给定的字符串字段中提取文本
- coq - 如何在 Coq 中使用 de-morgan law 将“not forall”替换为“exists”?
- apache-spark - 增加 maxPartitionBytes 时输入大小变得更小
- python - tkinter 图形(带颜色条)每次显示时都会缩小
- google-apps-script - 在 Google 表格的模式弹出窗口中打开 Iframe