【Python】快速且方便地计算两个日期之间的差值

需求说明

简单、高效地计算出两个日期之间相差的具体天数。
要求在尽可能短的时间内,对两个包含了最大差值600000天以上的6000条乱序日期数据的文件进行交叉计算(A依次取一个数,遍历B文件,即进行36000000次计算)。


解决办法

# year, month, day均为int
d1 = datetime.date(year1, month1, day1)  
d2 = datetime.date(year2, month2, day2)
print((d1 - d2).days

嗯,就这么简单


其他不可行的路线

1 用dateutil的rrule

import datetime
from dateutil import rrule

day_sep = rrule.rrule(rrule.DAILY, dtstart=datetime.date(2020, 6, 29), until=datetime.date(2021, 1, 1))
print(day_sep.count())

我不知道为什么百度一搜“python 计算 时间间隔/差值”搜出来的基本全都是这种方法,这种方法极其不理想(超级垃圾),速度极其低

2 time.mktime

import time
start_date = "2020-1-1"
end_date = "2021-1-1"

start_sec = time.mktime(time.strptime(start_date, '%Y-%m-%d'))
end_sec = time.mktime(time.strptime(end_date, '%Y-%m-%d'))

days = int((end_sec - start_sec) / 86400)

print(days)

不能用的,这个使用windows/linux的时间戳计算的,有系统时间戳限制,无法对跨越600000天的两个时间计算,并且出现了莫名其妙的格式不匹配问题,不过因为直接废弃了这个解决方案,所以没有去细究bug原因

3 自己手写

也不是我自己手写,是之前我接受的代码
1天1天加,将小的日期加到和大的日期相等,从而计算出所经过的天数、月数、年数…
数据量小、数据差值小的时候还能用,数据量一大、差值一大直接爆炸
当然要是遵循这个总体思路的话,也是可以有很多优化方法的,但不如最开头的方法简单快捷


参考资料

python计算两个日期的间隔天数
Python计算日期间隔的天数
Python 计算两个日期之间天数
python计算两个时间间隔准确的天、月、年之差
python 计算两个日期之间的天数差、周数差、月数差、年数差

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值