반응형
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
반응형
'Program Tip' 카테고리의 다른 글
오류 '_BSMachError : 포트 1607; (0) | 2020.11.27 |
---|---|
역사와 함께 디렉토리 이동 (0) | 2020.11.27 |
SELECT DISTINCT가 지정된 경우 ORDER BY 항목이 선택 목록에 나타나야합니다. (0) | 2020.11.27 |
Mercurial로 어떻게 "전환"합니까? (0) | 2020.11.27 |
Java SE 6에서 Sun JVM의 기본 최대 힙 크기는 얼마입니까? (0) | 2020.11.26 |