如何在两个datetime对象之间以分钟为单位区分时间?


当前回答

这可能会帮助一些人,用这个方法找到过期与否其计算天数。这是dt。秒和dt。微秒也可用

from datetime import datetime
# updated_at = "2022-10-20T07:18:56.950563"
def is_expired(updated_at):
    expires_in = 7 #days
    datetime_format = '%Y-%m-%dT%H:%M:%S.%f'
    time_difference = datetime.now() - datetime.strptime(updated_at, datetime_format)

    return True if time_difference.days > expires_in else False

其他回答

要查找天数:timedelta有一个'days'属性。你可以简单地查询一下。

>>>from datetime import datetime, timedelta
>>>d1 = datetime(2015, 9, 12, 13, 9, 45)
>>>d2 = datetime(2015, 8, 29, 21, 10, 12)
>>>d3 = d1- d2
>>>print d3
13 days, 15:59:33
>>>print d3.days
13

只是认为在timedelta方面提到格式化可能是有用的。Strptime()根据格式解析表示时间的字符串。

from datetime import datetime

datetimeFormat = '%Y/%m/%d %H:%M:%S.%f'    
time1 = '2016/03/16 10:01:28.585'
time2 = '2016/03/16 09:56:28.067'  
time_dif = datetime.strptime(time1, datetimeFormat) - datetime.strptime(time2,datetimeFormat)
print(time_dif)

这将输出: 0:05:00.518000

Python 2.7新增了timedelta实例方法.total_seconds()。在Python文档中,这相当于(td。微秒+ (td。秒+ td。天* 24 * 3600)* 10**6)/ 10**6。

参考:http://docs.python.org/2/library/datetime.html # datetime.timedelta.total_seconds

>>> import datetime
>>> time1 = datetime.datetime.now()
>>> time2 = datetime.datetime.now() # waited a few minutes before pressing enter
>>> elapsedTime = time2 - time1
>>> elapsedTime
datetime.timedelta(0, 125, 749430)
>>> divmod(elapsedTime.total_seconds(), 60)
(2.0, 5.749430000000004) # divmod returns quotient and remainder
# 2 minutes, 5.74943 seconds
>>> import datetime
>>> first_time = datetime.datetime.now()
>>> later_time = datetime.datetime.now()
>>> difference = later_time - first_time
datetime.timedelta(0, 8, 562000)
>>> seconds_in_day = 24 * 60 * 60
>>> divmod(difference.days * seconds_in_day + difference.seconds, 60)
(0, 8)      # 0 minutes, 8 seconds

从第一个时间差中减去后面的时间= later_time - first_time创建一个只保存时间差的datetime对象。 在上面的例子中,它是0分钟,8秒和562000微秒。

这是我使用mktime的方法。

from datetime import datetime, timedelta
from time import mktime

yesterday = datetime.now() - timedelta(days=1)
today = datetime.now()

difference_in_seconds = abs(mktime(yesterday.timetuple()) - mktime(today.timetuple()))
difference_in_minutes = difference_in_seconds / 60