Python时差

use*_*652 21 python time datetime

我有两个时间对象.

time.struct_time(tm_year=2010, tm_mon=9, tm_mday=24, tm_hour=19, tm_min=13, tm_sec=37, tm_wday=4, tm_yday=267, tm_isdst=-1)

time.struct_time(tm_year=2010, tm_mon=9, tm_mday=25, tm_hour=13, tm_min=7, tm_sec=25, tm_wday=5, tm_yday=268, tm_isdst=-1)
Run Code Online (Sandbox Code Playgroud)

我想要有这两者的区别.我怎么能这样做?我只需要几分钟和几秒钟,以及这两者的持续时间.

Man*_*dan 22

Time实例不支持减法操作.鉴于解决此问题的一种方法是将时间转换为自纪元以来的秒数,然后找出差异,请使用:

>>> t1 = time.localtime()
>>> t1
time.struct_time(tm_year=2010, tm_mon=10, tm_mday=13, tm_hour=10, tm_min=12, tm_sec=27, tm_wday=2, tm_yday=286, tm_isdst=0)
>>> t2 = time.gmtime()
>>> t2
time.struct_time(tm_year=2010, tm_mon=10, tm_mday=13, tm_hour=4, tm_min=42, tm_sec=37, tm_wday=2, tm_yday=286, tm_isdst=0)

>>> (time.mktime(t1) - time.mktime(t2)) / 60
329.83333333333331
Run Code Online (Sandbox Code Playgroud)

  • 在python 3中,mktime函数返回自Epoch以来的秒数,因此无需除以60. (3认同)

jwe*_*ich 17

>>> t1 = time.mktime(time.strptime("10 Oct 10", "%d %b %y"))
>>> t2 = time.mktime(time.strptime("15 Oct 10", "%d %b %y"))
>>> print(datetime.timedelta(seconds=t2-t1))
5 days, 0:00:00
Run Code Online (Sandbox Code Playgroud)

  • [`mktime()`可能返回错误的结果](http://stackoverflow.com/a/26313848/4279) (2认同)