输入两个日期求相隔的天数

输入时期的格式为: 2020-5-20

import datetime


def is_runyear(years): # 判断一个年份是否是闰年
    return years%4 == 0 and years%100 != 0 or years%400 == 0

def for_str_data(data):
    # 格式化字符串,将字符串转化为列表"2018-1-1"->[2018,1,1]
    return data.split('-')

def dayofyear(str_data): # 利用datetime模块,求得一个datetime对象
    list_data = for_str_data(str_data)
    date = datetime.date(year=int(list_data[0]),month=int(list_data[1]),day=int(list_data[2])) 
    return date

def add_data(str_data1,str_data2): # 实现日期之间的日隔
    year1 = for_str_data(str_data1)[0] # 得到第一个年份
    year2 = for_str_data(str_data2)[0] # 得到第二个年份
    if year1 == year2: # 同年不同天,同一年里的两个日期的日隔
        return abs(dayofyear(str_data1) - dayofyear(str_data2)).days # 由两个日期(datetime对象)相减得到日隔
    elif year1 > year2 :
        add_data(str_data2,str_data1) # 排序,避免异常
    else:
        data1 = (dayofyear(year1+'-12-31')-dayofyear(str_data1)).days
        data2 = (dayofyear(str_data2)-dayofyear(year2+'-1-1')).days
        data3 = 0
        for i in range(1,int(year2)-int(year1)):
            if is_runyear(int(year1)+i):
                data3 += 365
            else:
                data3 += 366
        return data1 + data2 +data3

print((add_data("2020-1-19","2021-1-9")))

也不知道对不对,总感觉奇怪,希望有大佬指点迷津!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值