问题:如何检查两个日期之间的差异(以秒为单位)?
必须有一种更简单的方法来执行此操作。我有想要经常刷新的对象,因此我想记录它们的创建时间,对照当前时间戳进行检查,并根据需要刷新。
事实证明datetime.datetime很困难,我也不想深入ctime库。这样的事情有什么容易的吗?
回答 0
如果要计算两个已知日期之间的差异,请使用total_seconds
以下方法:
import datetime as dt
a = dt.datetime(2013,12,30,23,59,59)
b = dt.datetime(2013,12,31,23,59,59)
(b-a).total_seconds()
86400.0
#note that seconds doesn't give you what you want:
(b-a).seconds
0
回答 1
import time
current = time.time()
...job...
end = time.time()
diff = end - current
那对你有用吗?
回答 2
>>> from datetime import datetime
>>> a = datetime.now()
# wait a bit
>>> b = datetime.now()
>>> d = b - a # yields a timedelta object
>>> d.seconds
7
(7将是您在上面等待的时间长短)
我发现datetime.datetime非常有用,因此,如果您遇到了复杂或尴尬的情况,请告诉我们。
编辑:感谢@WoLpH指出,人们不一定总是希望刷新得如此频繁,以至于日期时间会接近。通过考虑增量中的天数,您可以处理更长的时间戳差异:
>>> a = datetime(2010, 12, 5)
>>> b = datetime(2010, 12, 7)
>>> d = b - a
>>> d.seconds
0
>>> d.days
2
>>> d.seconds + d.days * 86400
172800
回答 3
我们在Python 2.7中提供了total_seconds()函数,请参见下面的python 2.6代码
import datetime
import time
def diffdates(d1, d2):
#Date format: %Y-%m-%d %H:%M:%S
return (time.mktime(time.strptime(d2,"%Y-%m-%d %H:%M:%S")) -
time.mktime(time.strptime(d1, "%Y-%m-%d %H:%M:%S")))
d1 = datetime.now()
d2 = datetime.now() + timedelta(days=1)
diff = diffdates(d1, d2)
回答 4
这是为我工作的人。
from datetime import datetime
date_format = "%H:%M:%S"
# You could also pass datetime.time object in this part and convert it to string.
time_start = str('09:00:00')
time_end = str('18:00:00')
# Then get the difference here.
diff = datetime.strptime(time_end, date_format) - datetime.strptime(time_start, date_format)
# Get the time in hours i.e. 9.60, 8.5
result = diff.seconds / 3600;
希望这可以帮助!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。