목록에서 가장 오래된 / 가장 어린 datetime 개체 찾기


95

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 ()를 각각의 것들과 비교하려고 생각하고 있었다.


6
어떻 maxmin?
JoshD

9
stackoverflow에는 비슷한 질문이 없었고 답을 검색했기 때문에 다른 사람들에게 유용 할 것이라고 확신합니다.
panosl 2010 년

답변:


130

가장 오래된 :

oldest = min(datetimes)

지금까지 막내 :

now = datetime.datetime.now(pytz.utc)
youngest = max(dt for dt in datetimes if dt < now)

가장 나이가 많으신가요? ( Oldest before now)
Bulgantamir

파이썬 3에서는 이것이 결함이라고 생각합니다. 이 배열 [ "April2020", "March2020"]을 제공하면 min이 가장 최근에 제공되는 것처럼 "April2020"을 제공합니다. 그러나 [ "April2020", "January2021", "March2020"]을 주면 min은 "April2020"을 제공합니다. 나는 min이 반드시 가장 최근 날짜가 아닌 가장 낮은 알파벳순을 줄 것이라고 확신합니다.
ScottyBlades

1
@ScottyBlades는 귀하의 예에서 값이 문자열 (날짜를 나타내지 만 실제로 date값 이 아님 )이므로 실제로 알파벳순으로 만 비교할 수 있기 때문입니다. 대신 date또는 datetime값 의 배열 이 있으면 올바르게 비교됩니다.
Jordan

30

주어진 날짜 목록 dates:

최대 날짜는 max(dates)

최소 날짜는 min(dates)


15

날짜 시간은 비슷합니다. 당신이 사용할 수 있도록 max(datetimes_list)하고min(datetimes_list)


6

이것을 시도해 보셨습니까?

>>> 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)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.