python日期间隔天数_Python编程题5--计算两个日期之间相隔的天数

题目

已知任意两个日期,计算出两个日期之间相隔的天数。

实现思路1

这里我们运用 Python 里面内置模块 time 来处理问题。

已知2个日期,格式为 yyyy-mm-dd

通过 time.strptime() 方法,把日期时间字符串解析为时间元组

通过 time.mktime() 方法,把时间元祖转换为时间戳

根据2个日期对应的时间戳,得到2个日期相差的秒数,进而计算出间隔天数

代码实现

import time

def demo(day1, day2):

time_array1 = time.strptime(day1, "%Y-%m-%d")

timestamp_day1 = int(time.mktime(time_array1))

time_array2 = time.strptime(day2, "%Y-%m-%d")

timestamp_day2 = int(time.mktime(time_array2))

result = (timestamp_day2 - timestamp_day1) // 60 // 60 // 24

return result

day1 = "2018-07-09"

day2 = "2020-09-26"

day_diff = demo(day1, day2)

print("两个日期的间隔天数:{} ".format(day_diff))

实现思路2

这里我们不使用 时间函数 来处理问题,我们可以先计算出每个日期距离公元元年1月1日的总天数,再求出两个日期的间隔天数。

需要判断某个年份是不是闰年,如果是闰年,则该年份天数为365+1

通过一个列表来存储每月份的天数,如果所给的2个日期中,年份是闰年,则2月份天数为28+1

根据所给的日期,遍历年月日,分别计算出2个日期距离公元元年1月1日的总天数

两个总天数相减,即可求出两个日期之间的天数

注意:

闰年的计算方法是 "四年一闰,百年不闰,四百年再闰" ,也就是说一般有以下两个条件:

能被4整除且不能被100整除的是闰年

能被400整除的是闰年

代码实现

def is_leap_year(year):

if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:

return 1

else:

return 0

def get_days(year, month, day):

days = 0

month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

if is_leap_year(year):

month_days[1] = 29

for i in range(1, year):

year_day = 365

if is_leap_year(i):

year_day = 366

days += year_day

for m in range(month - 1):

days += month_days[m]

days += day

return days

def get_result(start_time, end_time):

res = end_time - start_time

return res

year1, month1, day1 = 2018, 7, 9

year2, month2, day2 = 2020, 9, 26

days1 = get_days(year1, month1, day1)

days2 = get_days(year2, month2, day2)

day_diff = get_result(days1, days2)

print("两个日期的间隔天数:{} ".format(day_diff))

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值