666

2 つの日付 (例:'8/18/2008''9/26/2008') がある場合、これら 2 つの日付の間の日数を取得する最良の方法は何ですか?

4

14 に答える 14

1031

2 つの日付オブジェクトがある場合は、timedeltaオブジェクトを計算するだけでそれらを減算できます。

from datetime import date

d0 = date(2008, 8, 18)
d1 = date(2008, 9, 26)
delta = d1 - d0
print(delta.days)

ドキュメントの関連セクション: https://docs.python.org/library/datetime.html

別の例については、この回答を参照してください。

于 2008-09-29T23:41:22.830 に答える
203

datetime の力を使用する:

from datetime import datetime
date_format = "%m/%d/%Y"
a = datetime.strptime('8/18/2008', date_format)
b = datetime.strptime('9/26/2008', date_format)
delta = b - a
print delta.days # that's it
于 2008-09-29T23:41:59.710 に答える
48

クリスマスまでの日数:

>>> import datetime
>>> today = datetime.date.today()
>>> someday = datetime.date(2008, 12, 25)
>>> diff = someday - today
>>> diff.days
86

ここでより多くの算術。

于 2008-09-29T23:43:01.937 に答える
20

datetime モジュールが必要です。

>>> from datetime import datetime, timedelta 
>>> datetime(2008,08,18) - datetime(2008,09,26) 
datetime.timedelta(4) 

もう一つの例:

>>> import datetime 
>>> today = datetime.date.today() 
>>> print(today)
2008-09-01 
>>> last_year = datetime.date(2007, 9, 1) 
>>> print(today - last_year)
366 days, 0:00:00 

ここで指摘したように

于 2008-09-29T23:43:10.300 に答える
16
from datetime import datetime
start_date = datetime.strptime('8/18/2008', "%m/%d/%Y")
end_date = datetime.strptime('9/26/2008', "%m/%d/%Y")
print abs((end_date-start_date).days)
于 2012-04-26T10:58:02.887 に答える
12

また、次の方法でも簡単に実行できますarrow

import arrow

a = arrow.get('2017-05-09')
b = arrow.get('2017-05-11')

delta = (b-a)
print delta.days

参考:http ://arrow.readthedocs.io/en/latest/

于 2017-05-11T18:35:15.533 に答える
6

datetime.toordinal()まだ言及されていない方法もあります。

import datetime
print(datetime.date(2008,9,26).toordinal() - datetime.date(2008,8,18).toordinal())  # 39

https://docs.python.org/3/library/datetime.html#datetime.date.toordinal

date.トゥールディナル()

1 年の 1 月 1 日の序数が 1 である、日付のグレゴリオ暦の序数を 返しdateます。date.fromordinal(d.toordinal()) == d

ほど読みやすくはありませんが、日数差の計算には適しているようtimedelta.daysです。

于 2019-06-09T14:03:16.917 に答える