将TimeDiff转换为总秒数

我有时间差

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

现在,我如何find通过的总秒数? diff.seconds不计算天数。 我可以:

 diff.seconds + diff.days * 24 * 3600 

有一个内置的方法呢?

使用timedelta.total_seconds()

你用datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))expression式有一个问题。

(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,你的expression式的结果是UTC + 1,这似乎是UTC +(我的本地DST差异)…不是很有意义。 你应该考虑使用datetime.datetime.utcnow() ,当DST开启/closures时不会跳过一个小时,并且可能比time.time()更精确。

您可以使用mx.DateTime模块

 import mx.DateTime as mt t1 = mt.now() t2 = mt.now() print int((t2-t1).seconds)