首页 > 解决方案 > Python // 通过与今天日期的比较从数组中过滤掉某些日期

问题描述

我有这个日期列表:

['2020-03-17 12:00:00', '2020-03-17 15:00:00', '2020-03-17 18:00:00', '2020-03-17 21:00:00', '2020-03-18 00:00:00', '2020-03-18 03:00:00', '2020-03-18 06:00:00', '2020-03-18 09:00:00', '2020-03-18 12:00:00', '2020-03-18 15:00:00', '2020-03-18 18:00:00', '2020-03-18 21:00:00', '2020-03-19 00:00:00', '2020-03-19 03:00:00', '2020-03-19 06:00:00', '2020-03-19 09:00:00', '2020-03-19 12:00:00', '2020-03-19 15:00:00', '2020-03-19 18:00:00', '2020-03-19 21:00:00']

它包含每个间隔 3 小时的时间和截至 2020 年 3 月 19 日的多个日期,格式为 YYYY-MM-DD HH-MM-SS。

使用日期我可以获得今天的日期,现在我想将今天的日期与我上面的列表进行比较,并获取与今天的当前日期和明天匹配的所有日期,即:今天是 2020-03-17,我想获取所有日期他们的时间与今天和明天的日期相匹配,即 2020-03-17 和 2020-03-18

from datetime import date
current_date = date.today()

这是一个用于天气 api 请求的 Python 小型实践项目。(我是python新手,一直在研究这个问题,很难得到结果,最好在这里问一下,对你们来说可能是浪费时间,但对你有很大帮助~)

谢谢!

标签: pythondatedatetime

解决方案


您可以预先定义今天和明天的日期,遍历列表中的字符串,使用 适当地解析它们datetime.strptime,然后查看日期部分是否与今天或明天的日期匹配:

from datetime import datetime, timedelta

today = datetime.today().date()
tomorrow = today + timedelta(days=1)

out = []
for i in l:
    date =  datetime.strptime(i, '%Y-%m-%d %H:%M:%S').date()
    if date == today or date == tomorrow:
        out.append(i)

print(out)

['2020-03-17 12:00:00',
 '2020-03-17 15:00:00',
 '2020-03-17 18:00:00',
 '2020-03-17 21:00:00',
 '2020-03-18 00:00:00',
 '2020-03-18 03:00:00',
 '2020-03-18 06:00:00',
 '2020-03-18 09:00:00',
 '2020-03-18 12:00:00',
 '2020-03-18 15:00:00',
 '2020-03-18 18:00:00',
 '2020-03-18 21:00:00']

推荐阅读