Python中两个date之间的天数

查看两个date之间已经过了多less个完整日子的最简单方法是什么? 这是我现在正在做的。

math.floor((b - a).total_seconds()/float(86400)) 

假设你从字面上得到了两个date对象,你可以从另一个中减去一个,并查询得到的timedelta对象的天数:

 >>> from datetime import date >>> a = date(2011,11,24) >>> b = date(2011,11,17) >>> ab datetime.timedelta(7) >>> (ab).days 7 

它也适用于date时间 – 我认为它会下降到最近的一天:

 >>> from datetime import datetime >>> a = datetime(2011,11,24,0,0,0) >>> b = datetime(2011,11,17,23,59,59) >>> ab datetime.timedelta(6, 1) >>> (ab).days 6 

你的意思是完整的日历日,或24小时的组?

假设你使用Python的date时间,那么简单的24小时,那么timedelta对象已经有了days属性:

 days = (a - b).days 

对于日历日,您需要轮回到最近的一天,并且b到最近的一天,摆脱双方的部分date:

 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 

尝试:

 (ba).days 

我试着用b和一个datetime.datetypes。

参考我对其他答案的评论。 这是我如何计算在24小时和日历天的差异。 day属性在24小时内运行良好,并且该function对日历检查效果最佳。

 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