Python // Отфильтровать определенные даты из массива путем сравнения с сегодняшней датой - PullRequest
0 голосов
/ 17 марта 2020

У меня есть этот список дат:

['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 гг. В формате ГГГГ-ММ-ДД ЧЧ-ММ -SS.

Используя дату, я могу получить сегодняшнюю дату, и теперь я хочу сравнить сегодняшнюю дату с моим списком выше и получить все даты, которые соответствуют текущей текущей дате и завтра, , то есть: сегодня 2020 -03-17, я хочу получить все даты с их временем, совпадающим с сегодняшним днем ​​и завтрашней датой, то есть 2020-03-17 и 2020-03-18

from datetime import date
current_date = date.today()

Это для небольшого Практический проект в python для запроса API погоды. (Я новичок в python, я пытался исследовать эту проблему, довольно сложно получить результаты, и лучше было бы спросить об этом здесь, это может быть пустой тратой времени для вас, ребята, но это очень помогает ~)

Спасибо!

Ответы [ 3 ]

2 голосов
/ 17 марта 2020

Можно заранее определить сегодняшнюю и завтрашнюю дату, l oop по строкам в списке, соответствующим образом проанализировать их, используя 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']
1 голос
/ 17 марта 2020

Вы можете l oop по массиву и проверить, являются ли даты актуальными для сегодняшнего или завтрашнего объекта даты:

from datetime import datetime, timedelta

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

dates = [datetime.strptime(s, '%Y-%m-%d %H:%M:%S').date() for s in strings]
result = [date for date in dates if date in (today, tomorrow)]
0 голосов
/ 17 марта 2020

Использование dateutil.parser помогает избежать определения / обработки фиксированного формата даты и времени. Это обрабатывает это автоматически для вас.

from dateutil import parser
from datetime import date, timedelta

#timestamps=[your list of datatimes]

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

result=[dt for dt in timestamps if today <= parser.parse(dt).date() <= tomorrow]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...