Python 3时间:两个时间戳之间的秒数差异

时间:2017-12-18 21:32:36

标签: python time timestamp

我有两个时间戳字符串。我希望在几秒钟内找到它们之间的差异。

我试过了:

from time import gmtime, strptime
a = "Mon 11 Dec 2017 13:54:36 -0700"
b = "Mon 11 Dec 2017 13:54:36 -0000"

time1 = strptime(a, "%a %d %b %Y %H:%M:%S %z")
time2 = strptime(b, "%a %d %b %Y %H:%M:%S %z")

time1-time2

获取错误:TypeError:不支持的操作数类型 - :' time.struct_time'和' time.struct_time'

那么,如何使用打包时间来计算差异?

我成功使用了包日期时间 - 在下面的代码中,但我想我读到日期时间忽略了闰年中的秒数,或者是那种效果。因此,我正在尝试使用'时间'

from datetime import datetime
time1 = datetime.strptime(a, "%a %d %b %Y %H:%M:%S %z")
time2 = datetime.strptime(b, "%a %d %b %Y %H:%M:%S %z")
dif = time1 - time2
print(int(dif.total_seconds()))

非常感谢!

1 个答案:

答案 0 :(得分:0)

首先,您使用time.strptime,它返回<class 'time.struct_time'>,并且它不支持substract运算符,这是实现您想要转换为datetime的一种可能方式:< / p>

from datetime import datetime
from time import mktime
from time import gmtime, strptime

a = "Mon 11 Dec 2017 13:54:36 -0700"
b = "Mon 11 Dec 2017 13:54:36 -0000"

time1 = strptime(a, "%a %d %b %Y %H:%M:%S %z")
time2 = strptime(b, "%a %d %b %Y %H:%M:%S %z")

print(datetime.fromtimestamp(mktime(time1))-datetime.fromtimestamp(mktime(time2)))

甚至更好,请使用datetime.datetime.strptime,这样您就不需要进行中间转换。

有关日期时间支持操作的更详细说明,请参阅文档here中的supported operations部分。特别是它所说的部分:

  

如果两者都知道并且具有不同的tzinfo属性,则a-b就像是一样   首先将a和b转换为天真的UTC日期时间。结果   是(a.replace(tzinfo = None) - a.utcoffset()) - (b.replace(tzinfo = None)    - b.utcoffset()),但实现永远不会溢出。

无论如何,也许您最好的机会是考虑一种替代方法,例如本answer中提出的方法