У меня есть список объектов datetime, и я хочу найти самый старый или самый молодой. Некоторые из этих дат могут быть в будущем.
from datetime import datetime
datetime_list = [
datetime(2009, 10, 12, 10, 10),
datetime(2010, 10, 12, 10, 10),
datetime(2010, 10, 12, 10, 10),
datetime(2011, 10, 12, 10, 10), #future
datetime(2012, 10, 12, 10, 10), #future
]
Как это сделать наиболее оптимально? Я думал сравнить datetime.now () с каждым из них.
max
иmin
?Ответы:
Самый старый:
Самый молодой до сих пор:
now = datetime.datetime.now(pytz.utc) youngest = max(dt for dt in datetimes if dt < now)
источник
Oldest before now
)date
значениями), поэтому их можно действительно сравнивать только по алфавиту. Если бы у вас вместо этого был массив значенийdate
илиdatetime
, они бы сравнивались правильно.Учитывая список дат
dates
:Максимальная дата
max(dates)
Минимальная дата
min(dates)
источник
Дата и время сопоставимы; так что вы можете использовать
max(datetimes_list)
иmin(datetimes_list)
источник
Вы пробовали это:
>>> from datetime import datetime as DT >>> l =[] >>> l.append(DT(1988,12,12)) >>> l.append(DT(1979,12,12)) >>> l.append(DT(1979,12,11)) >>> l.append(DT(2011,12,11)) >>> l.append(DT(2022,12,11)) >>> min(l) datetime.datetime(1979, 12, 11, 0, 0) >>> max(l) datetime.datetime(2022, 12, 11, 0, 0)
источник
Модуль datetime имеет собственные версии min и max в качестве доступных методов. https://docs.python.org/2/library/datetime.html
источник