문제

특정 Python DateTime 객체가 x 시간 또는 분보다 오래되었는지 확인하고 싶습니다. 나는 다음과 비슷한 일을하려고 노력하고 있습니다.

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

이렇게하면 유형 오류가 발생합니다.

파이썬에서 날짜 시간 비교를하는 올바른 방법은 무엇입니까? 나는 이미 보았다 작동합니다 가깝지만 정확히 내가 원하는 것은 아닙니다. 나는 정상적인 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.fromtimestamp posix 타임 스탬프를 구문 분석합니다.

그렇게 :

# self.timestamp should be a datetime object
if (datetime.now() - self.timestamp).seconds > 100:
    print "object is over 100 seconds old"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top