两次约会之间的几天?

看看两次约会之间过了多少天,最短的方法是什么? 这就是我现在要做的。

math.floor((b - a).total_seconds()/float(86400))
227407 次浏览

假设您有两个日期对象,您可以从另一个对象中减去一个,然后查询得到的 timedelta物体,得到天数:

>>> 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

试试:

(b-a).days

我试过用 datetime.date型的 b 型和 a 型。

你是指整个日历日,还是24小时一组?

对于简单的24小时,假设您使用的是 Python 的 datetime,那么 时间三角洲对象已经具有 days 属性:

days = (a - b).days

对于日历日,你需要四舍五入到最近的一天,然后四舍五入到最近的一天,去掉两边的部分日期:

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

参考我对其他答案的评论。这就是我如何根据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