我有DateTime,来自字符串我在IS0格式示例中转换它们。 ISODate("2016-06-24T09:07:31.097Z")
我想使用python找到它们之间的差异,所以我这样做了:
string_older = "2016-05-18T20:53:43.776456"
string_young = "2016-05-16T20:53:43.776456"
datetime_older = datetime.datetime.strptime(string_older, "%Y-%m-%dT%H:%M:%S.%f") //date on ISO format
datetime_young = datetime.datetime.strptime(string_young, "%Y-%m-%dT%H:%M:%S.%f") //date on ISO format
a = time.mktime(datetime_older)
b = time.mktime(datetime_young)
diff = a - b
seconds = int(diff) % 60
但这会导致此错误TypeError: argument must be 9-item sequence, not datetime.datetime
在这一行time.mktime(datetime_older)
。
我不知道如何修复它?请帮忙。
答案 0 :(得分:3)
减去datetime
两个,会得到timedelta
。要获得以秒为单位表示的差异,请调用其total_seconds
方法。
string_older = "2016-05-18T20:53:43.776456"
string_young = "2016-05-16T20:53:43.776456"
datetime_older = datetime.datetime.strptime(string_older, "%Y-%m-%dT%H:%M:%S.%f") //date on ISO format
datetime_young = datetime.datetime.strptime(string_young, "%Y-%m-%dT%H:%M:%S.%f")
timedelta = datetime_older - datetime_young
seconds = timedelta.total_seconds()
timedelta。的 total_seconds()强>
返回持续时间中包含的总秒数。相当于(td.microseconds +(td.seconds + td.days * 24 * 3600)* 10 ** 6)/ 10 ** 6在启用真正除法的情况下计算。
答案 1 :(得分:0)
我认为你需要这个;没有必要使用time.mktime(),因为你已经有了日期时间。
import time, datetime
string_older = "2016-05-18T20:53:43.776456"
string_young = "2016-05-16T20:53:43.776456"
datetime_older = datetime.datetime.strptime(string_older, "%Y-%m- %dT%H:%M:%S.%f")
datetime_young = datetime.datetime.strptime(string_young, "%Y-%m-%dT%H:%M:%S.%f")
c = datetime_older - datetime_young
print(divmod(c.days * 86400 + c.seconds, 60) ) # minutes, seconds