bu şekilde birkaç olmasıdır bunu yapmanın avantajı modül bağımlılıkları ve döngü yok - aylar düz hesaplama ile bulunabilir.
import datetime as dt
def months_between(date1,date2):
if date1>date2:
date1,date2=date2,date1
m1=date1.year*12+date1.month
m2=date2.year*12+date2.month
months=m2-m1
if date1.day>date2.day:
months-=1
elif date1.day==date2.day:
seconds1=date1.hour*3600+date1.minute+date1.second
seconds2=date2.hour*3600+date2.minute+date2.second
if seconds1>seconds2:
months-=1
return months
date1 = dt.datetime.strptime('2011-08-15 12:00:00', '%Y-%m-%d %H:%M:%S')
date2 = dt.datetime.strptime('2012-02-15', '%Y-%m-%d')
print(months_between(date1,date2))
# 5
date1 = dt.datetime.strptime('2011-08-15 12:00:00', '%Y-%m-%d %H:%M:%S')
date2 = dt.datetime.strptime('2012-02-15 11:59:00', '%Y-%m-%d %X')
print(months_between(date1,date2))
# 5
date2 = dt.datetime.strptime('2012-02-15 12:00:00', '%Y-%m-%d %X')
print(months_between(date1,date2))
# 6
date2 = dt.datetime.strptime('2012-02-15 12:00:01', '%Y-%m-%d %X')
print(months_between(date1,date2))
# 6
: http://stackoverflow.com/questions/4039879 Bence
, amaçla zamanın atomik birimleri olarak ayda düşünün ve bu formülü kullanmak daha sezgisel/en-iki-tarih-içinde-ay-ay-iki-tarihleri-içinde-python – Dan
saat ile datetime için değil –
Bu sadece ne "tam ay sayısı" anlamına gelir karar verdikten sonra cevap daha kolay olacaktır. Bir ay sabit uzunlukta bir süre değildir; 28 ila 31 gün arasında değişebilir. 1 Ocak ve 1 Şubat, 1 Şubat ve 1 Mart'tan daha uzakta; "tam olarak 1 ay" aralıklarını mı diyorsunuz? –