Python时差

时间:2010-10-13 04:39:40

标签: python datetime time

我有两个时间对象。

实施例

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)

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:16)

>>> 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

答案 2 :(得分:2)

您可以将time.mktime(t)与struct_time对象(传递为“t”)一起使用,将其转换为“自纪元以来的秒数”浮点值。然后你可以减去那些以秒为单位得到差异,然后除以60得到分钟差异。

答案 3 :(得分:2)

还有另一种方法可以找到任何两个日期之间的时差(我猜不会比之前的解决方案更好):

 >>> import datetime
 >>> dt1 = datetime.datetime.strptime("10 Oct 10", "%d %b %y")
 >>> dt2 = datetime.datetime.strptime("15 Oct 10", "%d %b %y")
 >>> (dt2 - dt1).days
 5
 >>> (dt2 - dt1).seconds
 0
 >>>

它会给出天数或秒数或其组合的差异。 (dt2 - dt1)的类型是datetime.timedelta。请查看library以获取更多详细信息。