我有两个时间戳字符串。我希望在几秒钟内找到它们之间的差异。
我试过了:
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()))
非常感谢!
答案 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中提出的方法