2つの日付の間で何日が経過したかを確認する最短の方法は何ですか?これが私が今やっていることです。
math.floor((b - a).total_seconds()/float(86400))
文字通り2つの日付オブジェクトを取得していると仮定すると、一方から他方を減算し、結果の 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
暦日全体、または24時間のグループを意味しますか?
Pythonの日時を使用していると仮定すると、単純に24時間、 timedelta オブジェクトには既にdaysプロパティがあります:
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
他の回答に関する私のコメントを参照します。これは、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 __== '__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
試してください:
(b-a).days
私はbとaのタイプdatetime.date
を試しました。