python3练习:计算日期差

方法一

#日期练习题;计算日期差,方法一:直接减
from datetime import datetime
from datetime import date
import time

sum = 0
dates = ['2019-1-2','2019-1-27','2019-2-25','2019-3-25','2019-4-22','2019-5-20','2019-6-16','2019-7-19','2019-8-15','2019-9-10','2019-10-9','2019-10-31','2019-11-24']
for i in range(len(dates)-1):
    dateq = datetime.strptime(dates[i],'%Y-%m-%d').date()      #字符串格式转为日期格式
    dateh = datetime.strptime(dates[i+1],'%Y-%m-%d').date()    #字符串格式转为日期格式
    print(dateq,dateh,end='')                                  #,end=''不换行,在行尾显示一个空格
    datec =dateh -dateq                                        #两个日期的差
    print ('相隔:',datec.days)
    sum += datec.days
print ("总相隔:",sum,"次数:",len(dates)-1)
print("平均总相隔:%.2f" %(sum/(len(dates)-1)))

方法二

from datetime import datetime
from datetime import date
import time

#日期练习题;计算日期差,方法二:使用__sub__()方法
sum = 0
dates = ['2019-1-2','2019-1-27','2019-2-25','2019-3-25','2019-4-22','2019-5-20','2019-6-16','2019-7-19','2019-8-15','2019-9-10','2019-10-9','2019-10-31','2019-11-24']
for i in range(len(dates)-1):
    dateq = datetime.strptime(dates[i],'%Y-%m-%d').date()      #字符串格式转为日期格式
    dateh = datetime.strptime(dates[i+1],'%Y-%m-%d').date()    #字符串格式转为日期格式
    print(dateq,dateh,end='')                                  #,end=''不换行,在行尾显示一个空格
    datec =dateh.__sub__(dateq)                                #两个日期的差
    print ('相隔:',datec.days)
    sum += datec.days
print ("总相隔:",sum,"次数:",len(dates)-1)
print("平均总相隔:%.2f" %(sum/(len(dates)-1)))

结果一致

2019-01-02 2019-01-27相隔: 25
2019-01-27 2019-02-25相隔: 29
2019-02-25 2019-03-25相隔: 28
2019-03-25 2019-04-22相隔: 28
2019-04-22 2019-05-20相隔: 28
2019-05-20 2019-06-16相隔: 27
2019-06-16 2019-07-19相隔: 33
2019-07-19 2019-08-15相隔: 27
2019-08-15 2019-09-10相隔: 26
2019-09-10 2019-10-09相隔: 29
2019-10-09 2019-10-31相隔: 22
2019-10-31 2019-11-24相隔: 24
总相隔: 326 次数: 12
平均总相隔:27.17