欢迎访问宙启技术站
智能推送

Python函数如何计算两个日期间的天数

发布时间:2023-05-31 18:39:10

Python中计算两个日期之间的天数有多种方法,以下是其中几种比较简单、易懂的方法:

方法一:使用datetime库中的date方法

datetime库中的date方法可以用来获取日期,通过两个日期的差值即可得出天数。示例如下:

from datetime import date

def days_between(date1, date2):
    delta = date2 - date1
    return delta.days

date1 = date(2022, 5, 20)
date2 = date(2022, 5, 25)

print(days_between(date1, date2))

运行结果为5,表示2022年5月20日和2022年5月25日之间相差5天。

方法二:使用datetime库中的datetime方法

datetime库中的datetime方法可以用来获取日期和时间,需要先用datetime.strptime方法将字符串日期转换成datetime对象,然后通过两个datetime对象的差值得出天数。示例如下:

from datetime import datetime

def days_between(date1, date2):
    delta = date2 - date1
    return delta.days

date1 = datetime.strptime('2022-05-20', '%Y-%m-%d')
date2 = datetime.strptime('2022-05-25', '%Y-%m-%d')

print(days_between(date1, date2))

运行结果同方法一。

方法三:使用calendar库中的monthrange方法和date方法

calendar库中的monthrange方法可以用来获取某个月份的天数,结合date方法计算即可得出两个日期间的天数。示例如下:

from calendar import monthrange
from datetime import date

def days_between(date1, date2):
    delta = date2 - date1
    return delta.days

year1, month1, day1 = 2022, 5, 20
year2, month2, day2 = 2022, 5, 25

days1 = monthrange(year1, month1)[1] - day1
days2 = day2
for m in range(month1+1, month2):
    days2 += monthrange(year1, m)[1]
days2 += (year2 - year1 - 1) * 365
for y in range(year1+1, year2):
    if (y%4==0 and y%100!=0) or y%400==0:
        days2 += 1
    else:
        days2 += 0
days2 += monthrange(year2, month2)[1]

date1 = date(year1, month1, day1)
date2 = date(year2, month2, day2)

print(days_between(date1, date2))

运行结果同方法一和方法二。

总结:

以上三种方法都可以计算两个日期间的天数,其中方法一最简单,适合一般使用;方法二比较灵活,可以处理更复杂的情况;方法三较为复杂,需要处理闰年和每个月的天数,但能够处理跨年份的情况。具体选择哪种方法,需要根据实际情况考虑。