Python 3时间:两个时间戳之间的秒差
我有两个时间戳字符串。我想在几秒钟内找出它们之间的区别 我试过:Python 3时间:两个时间戳之间的秒差,python,time,timestamp,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
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\u time”和“time.struct\u time”
那么,如何使用打包时间计算差异呢
在下面的代码中,我成功地使用了包datetime,但我想我读到datetime忽略闰年中的秒,或者类似的东西。因此,我试图使用“时间”:
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()))
多谢各位 首先,您使用的是,它返回
,不支持减法运算符,实现所需的一种可能方法是转换为datetime:
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支持的操作的更详细说明,请参阅文档中的支持的操作
。特别是其中的一节:
如果两者都知道并且具有不同的tzinfo属性,则a-b的行为就如同
a和b首先转换为原始UTC日期时间。结果
is(a.replace(tzinfo=None)-a.utcoffset())-(b.replace(tzinfo=None)
-b.utcoffset()),但实现从不溢出
在任何情况下,也许你最好的机会是考虑一种替代方法,如本“但我认为我读到datetime忽略闰年中的秒数”,你在哪里读到的?我想它可能会忽略闰秒,这是偶尔添加的,没有真正的模式,但这可能不会有什么关系。对不起,你是对的-它忽略了闰秒,我认为这应该给你一些insight@user3245256:如果您关心闰秒,则
时间
模块不会做得更好<代码>时间和日期时间
使用相同的底层系统时间信息。另请参见,为了简单起见,大多数闰秒都被忽略,特别是因为如果不使用增量来计算未来的时间戳,则保证包含尚未通知的闰秒。闰秒是在只提前6个月通知的情况下添加的,在处理datetimes为更远的未来建模时,您无法以任何有意义的方式对其进行解释。@user3245256是的,上面的代码向您展示了如何使用datetime的-
运算符,如您所见,它将忽略字符串的最后一部分a
和b
。尝试将b更改为类似于b=“Mon 11 Dec 2017 13:54:31-0000”
的值,这样您就可以观察到差异。抱歉,我不确定我是否理解。我的b就是它。结果应相差7小时,以秒表示。