查看两个日期之间已经过了多少整天的最短途径是什么? 这就是我现在正在做的事情。
math.floor((b - a).total_seconds()/float(86400))
答案 0 :(得分:202)
假设您确实有两个日期对象,您可以从另一个中减去一个,并查询结果timedelta
object的天数:
>>> from datetime import date
>>> a = date(2011,11,24)
>>> b = date(2011,11,17)
>>> a-b
datetime.timedelta(7)
>>> (a-b).days
7
它也适用于日期时间 - 我认为它会向下舍入到最近的一天:
>>> from datetime import datetime
>>> a = datetime(2011,11,24,0,0,0)
>>> b = datetime(2011,11,17,23,59,59)
>>> a-b
datetime.timedelta(6, 1)
>>> (a-b).days
6
答案 1 :(得分:32)
您的意思是完整日历日或24小时组?
仅仅24小时,假设您正在使用Python的日期时间,那么timedelta对象已经有一个天属性:
days = (a - b).days
对于日历日,你需要向下舍入到最近的一天,并且b到最近的一天,摆脱任何一方的部分日:
roundedA = a.replace(hour = 0, minute = 0, second = 0, microsecond = 0)
roundedB = b.replace(hour = 0, minute = 0, second = 0, microsecond = 0)
days = (roundedA - roundedB).days
答案 2 :(得分:5)
尝试:
(b-a).days
我尝试使用b和a datetime.date
类型。
答案 3 :(得分:5)
参考我对其他答案的评论。这就是我如何计算基于24小时和日历天数的天数差异。 days属性24小时运行良好,该功能最适合日历检查。
from datetime import timedelta, datetime
def cal_days_diff(a,b):
A = a.replace(hour = 0, minute = 0, second = 0, microsecond = 0)
B = b.replace(hour = 0, minute = 0, second = 0, microsecond = 0)
return (A - B).days
if __name__ == '__main__':
x = datetime(2013, 06, 18, 16, 00)
y = datetime(2013, 06, 19, 2, 00)
print (y - x).days # 0
print cal_days_diff(y, x) # 1
z = datetime(2013, 06, 20, 2, 00)
print (z - x).days # 1
print cal_days_diff(z, x) # 2