web-dev-qa-db-ja.com

2つの日付の間の日?

2つの日付の間で何日が経過したかを確認する最短の方法は何ですか?これが私が今やっていることです。

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

文字通り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
209
Paul D. Waite

暦日全体、または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
33
DNS

他の回答に関する私のコメントを参照します。これは、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 
5
Matt Alcock

試してください:

(b-a).days

私はbとaのタイプdatetime.dateを試しました。

5
M S