[python] timedelta를 총 초로 변환

나는 시차가있다

time1 = datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
...
time2 = datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
diff = time2 - time1

이제 경과 한 총 시간 (초)을 어떻게 찾습니까? diff.seconds일을 계산하지 않습니다. 난 할 수 있습니다:

diff.seconds + diff.days * 24 * 3600

이를위한 내장 방법이 있습니까?



답변

사용하십시오 timedelta.total_seconds().

>>> import datetime
>>> datetime.timedelta(seconds=24*60*60).total_seconds()
86400.0


답변

당신은 표현에 문제가 있습니다 datetime.datetime.fromtimestamp(time.mktime(time.gmtime())).

(1) 두 순간의 차이가 초 단위로 필요한 경우 매우 간단 time.time()합니다.

(2) 다른 목적으로 해당 타임 스탬프를 사용하는 경우 결과 전체에 큰 냄새가 나기 때문에 수행중인 작업을 고려해야합니다.

gmtime()UTC 로 시간 튜플을 반환 하지만 현지 시간mktime() 으로 시간 튜플을 기대합니다 .

저는 표준 TZ가 UTC + 10 인 호주 멜버른에 있지만 일광 절약은 내일 아침까지 계속 적용되므로 UTC + 11입니다. 다음을 실행할 때 현지 시간은 2011-04-02T20 : 31 였고 UTC는 2011-04-02T09 : 31이었습니다.

>>> import time, datetime
>>> t1 = time.gmtime()
>>> t2 = time.mktime(t1)
>>> t3 = datetime.datetime.fromtimestamp(t2)
>>> print t0
1301735358.78
>>> print t1
time.struct_time(tm_year=2011, tm_mon=4, tm_mday=2, tm_hour=9, tm_min=31, tm_sec=3, tm_wday=5, tm_yday=92, tm_isdst=0) ### this is UTC
>>> print t2
1301700663.0
>>> print t3
2011-04-02 10:31:03 ### this is UTC+1
>>> tt = time.time(); print tt
1301736663.88
>>> print datetime.datetime.now()
2011-04-02 20:31:03.882000 ### UTC+11, my local time
>>> print datetime.datetime(1970,1,1) + datetime.timedelta(seconds=tt)
2011-04-02 09:31:03.880000 ### UTC
>>> print time.localtime()
time.struct_time(tm_year=2011, tm_mon=4, tm_mday=2, tm_hour=20, tm_min=31, tm_sec=3, tm_wday=5, tm_yday=92, tm_isdst=1) ### UTC+11, my local time

t3의 표현 결과는 UTC + 1이며 UTC + (나의 로컬 DST 차이)로 나타납니다 …별로 의미가 없습니다. datetime.datetime.utcnow()DST가 켜지거나 꺼질 때 한 시간 씩 뛰지 않는 것을 사용 하는 것이 좋습니다.time.time()


답변

mx.DateTime 모듈을 사용할 수 있습니다

import mx.DateTime as mt

t1 = mt.now()
t2 = mt.now()
print int((t2-t1).seconds)


답변