【时间处理】Python 计算两个日期相差的天数

有时候需要算两个日期相差多少天,如果两个日期相差大,真的去数肯定很麻烦,还得计算有的是有三十天,有的是三十一天,还有闰年和平年的区别。而这时候如果有一个方法或者函数,只需要输入要计算的两个日期即可,那就方便快捷了很多。

而Python正好可以提供这么一个方法函数,为什么选择Python,首先它的体积小,环境配置简单,其次配置了环境变量后,脚本可以像txt,word等一样独立运行。(代码所用的Python版本为Python3.6。)

首先导入需要用到的时间和日期库,创建日期相差的方法函数:

 
  1. import time

  2. import datetime

  3. #计算两个日期相差天数,自定义函数名,和两个日期的变量名。

  4. def Caltime(date1,date2):

  5. #%Y-%m-%d为日期格式,其中的-可以用其他代替或者不写,但是要统一,同理后面的时分秒也一样;可以只计算日期,不计算时间。

  6. #date1=time.strptime(date1,"%Y-%m-%d %H:%M:%S")

  7. #date2=time.strptime(date2,"%Y-%m-%d %H:%M:%S")

  8. date1=time.strptime(date1,"%Y-%m-%d")

  9. date2=time.strptime(date2,"%Y-%m-%d")

  10. #根据上面需要计算日期还是日期时间,来确定需要几个数组段。下标0表示年,小标1表示月,依次类推...

  11. #date1=datetime.datetime(date1[0],date1[1],date1[2],date1[3],date1[4],date1[5])

  12. #date2=datetime.datetime(date2[0],date2[1],date2[2],date2[3],date2[4],date2[5])

  13. date1=datetime.datetime(date1[0],date1[1],date1[2])

  14. date2=datetime.datetime(date2[0],date2[1],date2[2])

  15. #返回两个变量相差的值,就是相差天数

  16. return date2-date1

接着就是需要判断输入的日期时候为合法日期了,函数代码为:

 
  1. #判断日期是否为合法输入,年月日的格式需要与上面对应,正确返回True,错误返回False,注意大小写。

  2. def is_date(str):

  3. try:

  4. time.strptime(str,"%Y-%m-%d")

  5. return True

  6. except:

  7. return False

最后就是运用函数,并输出到txt文档中:

 
  1. if __name__=='__main__':

  2. #提示信息请根据实际情况更改

  3. print('请输入较早日期(格式例:xxxx-xx-xx):')

  4. while True:

  5. dt1=input()

  6. if is_date(dt1)==True:

  7. break

  8. else:

  9. print('请输入正确的日期!!!请重新输入!!!')

  10. #print(is_date(dt1))

  11. print('\n请输入较晚日期(格式为:xxxx-xx-xx):')

  12. while True:

  13. dt2=input()

  14. if is_date(dt2)==True:

  15. break

  16. else:

  17. print('请输入正确的日期!!!请重新输入!!!')

  18. #将结果保存到当前目录下的t_day.txt,该txt文档会自动创建,名字可自定义。

  19. with open('./t_day.txt','a') as f:

  20. f.write('较早日期为:'+dt1+' 较晚日期为:'+dt2)

  21. f.write('\n两个日期相差 ')

  22. print (Caltime(dt1,dt2),file=f)

  23. f.write('\n')

  24. f.close

有的时候要统计两个日期之间的相距天数,可能有很多种方法,但使用datetime模块的datetime方法无疑是里面比较简单的,具体代码如下:

>>> import datetime
>>> d1 = datetime.datetime(2018,10,31)   # 第一个日期
>>> d2 = datetime.datetime(2019,02,02)   # 第二个日期
>>> interval = d2 - d1                   # 两日期差距
>>> interval.days                        # 具体的天数                     
94
>>> interval.seconds                     # 具体的秒数
0
>>>
从上面来看,还是相当简单。具体的days和seconds就是具体的差距的天数和额外的秒数。里面常用的方法有:

>>> filter(lambda x: not x.startswith("_"), dir(interval))
['days', 'max', 'microseconds', 'min', 'resolution', 'seconds', 'total_seconds']
>>>
如果是两个日期还是带时,分,秒的话,同样可以算出两者的相距天数及秒数.

>>> import datetime
>>> d1 = datetime.datetime(2018,10,31,10,30,00)
>>> d2 = datetime.datetime(2018,11,01,10,40,30)
>>> interval = d2 - d1
>>> interval                   # 第一项是天数,相距1天
datetime.timedelta(1, 630)
>>> interval.days              # 具体天数
1
>>> interval.seconds           # 额外秒数
630
>>> interval.total_seconds()   # 相差总秒数  
87030.0
>>>
 
————————————————
原文链接:https://blog.csdn.net/jerry_1126/article/details/83590783

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值