Как вычесть n минут из списка даты и времени и вернуть дату и время, которые соответствуют - PullRequest
0 голосов
/ 07 июня 2019

У меня есть список дат из твитов в твиттере, который возвращает время, когда твит был создан, как эти

Thu Jun 06 22:02:08 +0000 2019
Thu Jun 06 22:47:37 +0000 2019

Я хочу вернуть несколько сообщений, которые были созданы 10 минут назад

Я попытался преобразовать их в дату и время и вычесть 10 минут из текущего времени, и посмотреть, не упадет ли любое из приведенных выше значений времени и даты между текущим временем минус 10 минут

minutes = 10
time_diff = datetime.datetime.utcnow() - datetime.timedelta(minutes=minutes)
formated_time_and_date = time_diff.strftime("%a %b %d %Y %H:%M:%S")
mins_now = int(time_diff.minute)
print(f"Minutes now: {mins_now}")
hours_now = int(time_diff.hour)

print(f"hours now: {hours_now}")
# print(formated_time_and_date[:13])
minutes = int(formated_time_and_date.split(':')[1])
recent_timeline_tweets = list(filter(lambda x: x.get(
        'date') == formated_time_and_date[:15] and
        (x.get('hours') == hours_now) and mins_now >= x.get('minutes'), tweets))

переменная твитов - это список объектов твитов. Идея состоит в том, чтобы получить последние n минут datetime из списка datetime, скажем, пост, опубликованный 10 минут или 60 минут назад, вернуть эти datetime

1 Ответ

1 голос
/ 07 июня 2019

Python 2:

import datetime
from dateutil.parser import parse

desired_minutes = 10

formated_time_and_date = [
    'Thu Jun 06 22:02:08 +0000 2019',
    'Thu Jun 06 22:47:37 +0000 2019'
]

recent_timeline_tweets = list(
    filter(
        lambda x:
            (datetime.datetime.utcnow() - parse(x).replace(tzinfo=None)) < datetime.timedelta(minutes=desired_minutes),
        formated_time_and_date
    ))

Python 3:

Первая установка python-dateutil, встроенная в python 2:

pip install python-dateutil

Затем снова запустите приведенный выше код (который я предоставил для python 2);)

...