我希望如果我在Python中减去两个日期时间,我会得到减去日期,周数等的日期时间......
这是我的样本。我得到的只是减去小时,分钟和秒。日期变量取自数据库。在type()函数上返回datetime.datetime。
def elapsed_time(date):
"""
Custom filter that format time to "x time age".
:param date:
:return:
"""
if date is None:
return 'No time given'
now = datetime.datetime.now()
elapsed = (now - date).seconds
if elapsed < 60:
return '{} seconds ago'.format(elapsed)
elif elapsed < 3600:
return '{} minutes ago'.format(int(elapsed / 60))
elif elapsed < 86400:
return '{} hours ago'.format(int(elapsed / 3600))
else:
return '{} days ago'.format((elapsed / 86400))
我目前的例子:
鉴于datetime是2017-07-27 01:18:58.398231
当前日期时间是2017-07-31 20:23:36.095440
结果是19小时(68677秒)
答案 0 :(得分:0)
以下行仅返回&#39;秒&#39;差异的组成部分,不考虑它的天/小时/分钟组成部分。
elapsed = (now - date).seconds
您需要的是使用total_seconds()而不是仅仅秒,因为您在后续条件中尝试比较的是什么。使用方法如下:
elapsed = (now - date).total_seconds()
其余代码保持不变,您将获得所需的输出。
答案 1 :(得分:0)
如果你减去两个日期时间对象,结果将是timedelta
diff.default
如果第二个时间步长早于第一个时间步,则结果可能会令人恼火。请参阅示例中的否定日。
import datetime as dt
import time
t1 = dt.datetime.now()
time.sleep(4)
t2 = dt.datetime.now()
dt1 = t2 - t1
print(dt1)
print(dt1.total_seconds())
print(type(dt1))
dt2 = t1 - t2
print(dt2.total_seconds())
print(dt2)
print(type(dt2))
只是结果的一部分,您正在寻找
dt.seconds