Program Tip

Python 날짜 비교

programtip 2020. 11. 27. 21:09
반응형

Python 날짜 비교


특정 파이썬 datetime 객체가 X 시간 또는 분보다 오래된 지 확인하고 싶습니다. 나는 다음과 비슷한 것을 시도하고 있습니다.

if (datetime.now() - self.timestamp) > 100
# Where 100 is either seconds or minutes

이로 인해 유형 오류가 발생합니다.

파이썬에서 날짜 시간 비교를 수행하는 적절한 방법은 무엇입니까? 나는 이미 가깝지만 정확히 내가 원하는 것은 아닌 WorkingWithTime보았다 . 나는 정상적인 int 비교를 할 수 있도록 datetime 객체를 초 단위로 표시하기를 원한다고 가정합니다.

datetime 모범 사례 목록을 게시하십시오.


datetime.timedelta수업 사용 :

>>> from datetime import datetime, timedelta
>>> then = datetime.now() - timedelta(hours = 2)
>>> now = datetime.now()
>>> (now - then) > timedelta(days = 1)
False
>>> (now - then) > timedelta(hours = 1)
True

귀하의 예는 다음과 같이 작성할 수 있습니다.

if (datetime.now() - self.timestamp) > timedelta(seconds = 100)

또는

if (datetime.now() - self.timestamp) > timedelta(minutes = 100)

생성 한 타임 델타와 차이를 비교합니다.

if datetime.datetime.now() - timestamp > datetime.timedelta(seconds = 5):
    print 'older'

대안 :

if (datetime.now() - self.timestamp).total_seconds() > 100:

self.timestamp가 datetime 인스턴스라고 가정합니다.


다음과 같이 반환 된 객체의 '일'및 '초'속성을 조합하여 답을 알아낼 수 있습니다.

def seconds_difference(stamp1, stamp2):
    delta = stamp1 - stamp2
    return 24*60*60*delta.days + delta.seconds + delta.microseconds/1000000.

항상 양의 초를 원하면 대답에 abs ()를 사용하십시오.

타임 스탬프가 지난 몇 초 전인지 확인하려면 다음과 같이 사용할 수 있습니다.

if seconds_difference(datetime.datetime.now(), timestamp) < 100:
     pass

두 개의 datetime 객체를 빼서 차이를 찾을 수 있습니다. POSIX 타임 스탬프를 구문 분석하는 데
사용할 수 있습니다 datetime.fromtimestamp.


이렇게 :

# self.timestamp should be a datetime object
if (datetime.now() - self.timestamp).seconds > 100:
    print "object is over 100 seconds old"

참고 URL : https://stackoverflow.com/questions/130618/python-date-comparisons

반응형