python应用-计算两个日期的时间差

学习目录

1. 安装deteutil包

2. 导入relativedelta类

3. 计算两个日期的差值

4. 计算1个日期和时间差相加后得到新的日期

之前在工作中遇到一个使用场景:需要计算两个日期之前的差值,比如相差了几年几月几日,查找资料发现deteutil包的relativvedelta类可以很好的解决这个问题,分享给大家。

安装deteutil包

pip install python-dateutil -i https://mirrors.aliyun.com/pypi/simple/

导入relativedelta类

from dateutil.relativedelta import relativedelta

该类初始化参数如下:

该类支持传入很多参数,具体大家可以查看类的源码。

  • 支持输入两个日期计算之间的差值(dt1和dt2传入的是时间对象)
  • 支持某个日期和日期差值相加后得到的新日期

计算两个日期的差值

  • 场景1 给定两个日期对象,计算两个日期的差值

通过datetime转化为两个日期对象date1和date2,通过relativedelta函数计算时间差值并打印相差的年月日时分秒。

from datetime import datetime
from dateutil.relativedelta import relativedeltadate1 = datetime(2024,5,1,14,25,25)
date2 = datetime(2023,4,1,16,23,23)delta = relativedelta(date1, date2)print(f"相差年数:{delta.years}")
print(f"相差月数:{delta.months}")
print(f"相差天数:{delta.days}")
print(f"相差小时数:{delta.hours}")
print(f"相差分钟数:{delta.minutes}")
print(f"相差秒数:{delta.seconds}")
结果:
相差年数:1
相差月数:0
相差天数:29
相差小时数:22
相差分钟数:2
相差秒数:2

  • 场景2 给定两个时间字符串,计算两个日期的差值

给定两个时间字符串date1和date2,通过datetime.striptime()函数将字符串转为时间对象。

date1 = '20240501142525'
date2 = '20230401162323'
date1 = datetime.strptime(date1,'%Y%m%d%H%M%S')
date2 = datetime.strptime(date2,'%Y%m%d%H%M%S')#计算差值
delta = relativedelta(date1, date2)print(f"相差年数:{delta.years}")
print(f"相差月数:{delta.months}")
print(f"相差天数:{delta.days}")
print(f"相差小时数:{delta.hours}")
print(f"相差分钟数:{delta.minutes}")
print(f"相差秒数:{delta.seconds}")
结果同上,不再赘述。

计算1个日期和时间差相加后得到新的日期

  • 场景1 在2024年4月7日基础上,加上时间差1年2个月2个星期3天1个小时2分钟3秒,得到1个新日期。
from datetime import datetime
from dateutil.relativedelta import relativedeltadate = datetime(2024, 4, 7)#使用时不需要传入dt1 和dt2参数,只需要传入时间差值
delta = relativedelta(years=1, months=2, weeks=2, days=3, hours=1, minutes=2, seconds=3)#计算新日期
new_date = date + delta
print(new_date)#结果:
2025-06-24 01:02:03
  • 场景2 计算20240407日期后面33天是哪天
date1 = '20240407'
date1 = datetime.strptime(date1,'%Y%m%d')delta = relativedelta(days=33)new_date = date1 + delta#datetime.strftime函数将日期对象转为字符串
new_date = datetime.strftime(new_date,'%Y%m%d')
print(new_date)

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习,谢谢大家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/598308.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记一次农业工程学报投稿流程与感悟

经过数段时间的实验与熬夜,终于得出一个比较满意的结果,本想着第一篇先随便发一个试试投稿流程,但是经过老师修改后非让投农业工程学报,然后在网上查了一些信息后有点害怕,大致都是在说周期长,审稿慢等等 …

《QT实用小工具·十七》密钥生成工具

1、概述 源码放在文章末尾 该项目主要用于生成密钥,下面是demo演示: 项目部分代码如下: #pragma execution_character_set("utf-8")#include "frmmain.h" #include "ui_frmmain.h" #include "qmessag…

Java实现二叉树(上)

1.树型结构 1.1树型结构的概念 树是一种 非线性 的数据结构,它是由 n ( n>0 )个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看 起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的 1.2树型结构的特点…

原型变量、原子操作、原子性、内存序

一、原子变量、原子操作 锁竞争:互斥锁、条件变量、原子变量、信号量、读写锁、自旋锁。在高性能基础组件优化的时候,为了进一步提高并发性能,可以使用原子变量。性能:原子变量 > 自旋锁 > 互斥锁。 操作临界资源的时间较长…

【leetcode】 c++ 数字全排列, test ok

1. 问题 2. 思路 3. 代码实现 #if 0 class Solution { private:vector<int> path; // 满足条件的一个结果 vector<vector<int>> res; // 结果集 void backtracking(vector<int> nums, vector<bool> used){// 若path的个数和nums个数相等&…

K8S基于containerd做容器从harbor拉取镜

实现创建pod时&#xff0c;通过指定harbor仓库里的镜像来运行pod 检查&#xff1a;K8S是不是用containerd做容器运行时&#xff0c;以及containerd的版本是不是小于1.6.22 kubectl get nodes -owide1、如果containerd小于 1.6.22&#xff0c;需要先升级containerd 先卸载旧的…

金三银四面试题(十六):MySQL面试都问什么(1)

在开发岗位面试中&#xff0c;MySQL基本是必考环节。所以接下来我们就进入MySQL八股文环节&#xff0c;看看都有哪些高频考题。 MySQL 中有哪些不同的表格&#xff1f; 在MySQL中&#xff0c;可以创建多种不同类型的表格&#xff0c;其中一些常见的类型包括&#xff1a; InnoD…

【边缘智能】00_边缘计算发展背景

本系列是个人学习《边缘就算基础知识入门》的笔记&#xff0c;仅为个人学习记录&#xff0c;欢迎交流&#xff0c;感谢批评指正 移动物联设备产生海量数据&#xff0c;数据密集型移动智能应用&#xff0c;计算密集、动态性高&#xff0c;实时性强 传统云计算架构 基于广域互联…

不开玩笑,你应该像「搬砖」一样写代码!斯坦福大学研究如是说

由于程序员不可避免要进行很多重复性的工作&#xff0c;并且工作强度很高&#xff0c;导致有一种自嘲的说法出现&#xff1a;程序员们自称自己每天都在搬砖&#xff08;实际上很多职场人都这么自嘲&#xff09;。我相信当我们说工作像「搬砖」的时候&#xff0c;只是在表达一种…

谷歌DeepMind发布Gecko:专攻检索,与大7倍模型相抗衡

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 Gecko 是一种通用的文本嵌入模型&#xff0c;可用于训练包括文档检索、语义相似度和分类等各…

2-django、http、web框架、django及django请求生命周期、路由控制、视图层

1 http 2 web框架 3 django 3.1 django请求生命周期 4 路由控制 5 视图层 1 http #1 http 是什么 #2 http特点 #3 请求协议详情-请求首行---》请求方式&#xff0c;请求地址&#xff0c;请求协议版本-请求头---》key:value形式-referer&#xff1a;上一次访问的地址-user-agen…

一开始我只是接单试试水而已,后来我居然财富自由了!

一开始我只是抱着试一试的心态&#xff0c;浅浅的尝试了一下网上接单&#xff0c;没办法&#xff0c;这风太大了&#xff01;网上个个儿说的神乎其神的&#xff0c;尤其是动不动就几十W&#xff0c;没办法&#xff0c;我眼红啦&#xff01;赚钱嘛&#xff0c;不丢人&#xff01…