[python] 날짜가 datetime.today ()와 같은 날인지 어떻게 확인할 수 있습니까?

이 조건 True은 시간을 비교하기 때문에 같은 날이더라도 항상 평가됩니다 .

from datetime import datetime

# ...

if date_num_posts < datetime.today():

날짜가 같은 날인지 어떻게 확인할 수 datetime.today()있습니까?



답변

날짜 만 비교하고 싶다면

yourdatetime.date() < datetime.today().date()

또는 당연히

yourdatetime.date() == datetime.today().date()

같은 날짜 인지 확인하려면 .

문서 는 일반적으로 도움이됩니다. 또한 일반적으로에 대한 첫 번째 Google 결과입니다 python thing_i_have_a_question_about. 귀하의 질문이 “snake”라는 함수 / 모듈에 관한 것이 아니라면.

기본적으로 datetime모듈에는 특정 시점을 저장하는 세 가지 유형이 있습니다.

  • date 년, 월, 일
  • time 시, 분, 초, 마이크로 초, 시간대 정보
  • datetime날짜와 시간을 결합합니다. 이 방법을 가지고 date()time()해당 얻을 수 datetime개체를하고 편리한 거기에 combine결합하는 기능 datetime으로는 datetime.


답변

  • 날짜 값만 비교해야하는 경우 다음 코드를 사용할 수 있습니다.

    if yourdate.day == datetime.today().day:
        # do something
    
  • 두 날짜의 차이가 허용 되는지 확인해야하는 경우 timedelta 를 사용할 수 있습니다
    .

    if (datetime.today() - yourdate).days == 0:
        #do something
    
  • 날짜 부분 만 비교하려면 다음을 사용하면됩니다.

    from datetime import datetime, date
    if yourdatetime.date() < datetime.today().date()
        # do something
    

timedelta의 형식은 다음과 같습니다.

datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])

따라서 실제로 필요한 것에 따라 일, 초, msec, 분 등으로 diff를 확인할 수 있습니다.

from datetime import datetime
if (datetime.today() - yourdate).days == 0:
    #do something

두 날짜가 정확히 동일한 지 확인해야하는 경우 timedelta (0)를 사용할 수 있습니다.

from datetime import datetime, timedelta
if (datetime.today() - yourdate) == timedelta(0):
    #do something


답변

시간, 분, 초 및 마이크로 초를 원하는대로 설정할 수 있습니다.

datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)

그러나 진실성의 대답은 아마도 그들이 모두 0이 될 때 가장 좋을 것입니다. .date() 시간 s를

replace()한 번 대 수백 번의 호출 만 수행하면되므로 수백 개의 datetime을 비교해야하는 경우 더 빠를 수 있습니다.date()


답변

all(getattr(someTime,x)==getattr(today(),x) for x in ['year','month','day'])

를 사용하여 비교해야 .date()하지만, 예를 들어 월별 또는 분별로 비교하려는 경우를 대비하여이 방법을 예제로 남겨 둡니다.


답변