Eu tenho uma lista de objetos datetime e quero encontrar o mais antigo ou o mais novo. Algumas dessas datas podem ser no futuro.
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
]
Qual é a maneira mais ideal de fazer isso? Eu estava pensando em comparar datetime.now () a cada um deles.
max
emin
?Respostas:
Mais antigo:
oldest = min(datetimes)
O mais jovem antes de agora:
now = datetime.datetime.now(pytz.utc) youngest = max(dt for dt in datetimes if dt < now)
fonte
Oldest before now
)date
valores), então eles só podem ser realmente comparados em ordem alfabética. Se, em vez disso, você tivesse uma matriz de valoresdate
oudatetime
, eles seriam comparados corretamente.Dada uma lista de datas
dates
:Data máxima é
max(dates)
Data mínima é
min(dates)
fonte
Datetimes são comparáveis; então você pode usar
max(datetimes_list)
emin(datetimes_list)
fonte
você já tentou isso:
>>> 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)
fonte
O módulo datetime tem suas próprias versões de min e max como métodos disponíveis. https://docs.python.org/2/library/datetime.html
fonte