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

news2024/11/27 12:41:09

学习目录

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 relativedelta

date1 = 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 relativedelta

date = 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.coloradmin.cn/o/1578137.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Leaflet.js的Marker闪烁特效的实现-模拟预警

目录 前言 一、闪烁组件 1、关于leaflet-icon-pulse 2、 使用leaflet-icon-pulse 3、方法及参数简介 二、闪烁实例开发 1、创建网页 2、Marker闪烁设置 3、实际效果 三、总结 前言 在一些地质灾害或者应急情况当中,或者热门预测当中。我们需要基于时空位置来…

行云防水堡-打造企业数据安全新防线

企业数据安全,顾名思义就是通过各种手段或者技术或者工具保障企业数据的安全性;保障数据信息的硬件、软件及数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,信息服务不中断。目…

[C++][算法基础]合并集合(并查集)

一共有 n 个数,编号是 1∼n,最开始每个数各自在一个集合中。 现在要进行 m 个操作,操作共有两种: M a b,将编号为 a 和 b 的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操…

数据库讲解---(SQL语句--表的使用)【MySQL版本】

零.前言 数据库讲解(MySQL版)(超详细)【第一章】-CSDN博客 数据库-ER图教程_e-r图数据库-CSDN博客 数据库讲解(MySQL版)(超详细)【第二章】【上】-CSDN博客 一.SQL概述 1.1SQL简…

FaceForensics++数据库下载(一步步解析过程)

FaceForensics数据库下载(超详细版教程) 相信很多做deepfake相关研究的朋友,在对模型进行测试或者对潜前人的研究进行复现时,都需要下载一系列数据库并进行预处理等操作,而FaceForensics数据库是一个由数千个使用不同…

地又接错了?又冒烟了吧?

原文来自微信公众号:工程师看海,与我联系:chunhou0820 看海原创视频教程:《运放秘籍》 大家好,我是工程师看海,原创文章欢迎点赞分享! 作为一名硬件工程师,理解地的概念是至关重要的…

大数据之搭建Hive组件

声明:所有软件自行下载,并存放到统一目录中 1.Hive组件的安装配置 1.1实验环境 服务器集群3 个以上节点,节点间网络互通,各节点最低配置:双核 CPU、8GB 内存、100G 硬盘运行环境CentOS 7.4服务和组件完成前面章节实验…

redis的简单操作

redis中string的操作 安装 下载可视化软件:https://gitee.com/qishibo/AnotherRedisDesktopManager/releases。 Mac安装redis: brew install redisWindows安装redis: 安装包下载地址:https://github.com/tporadowski/redis/releases 1.…

内存管理new and delete(C++)

在本篇中,将会较为详细的介绍在 Cpp 中的两个新操作符 new 和 delete,将会介绍其中的底层原理,以及这两个操作符的使用方法。其中还介绍了 new/delete 操作符使用的细节,还扩展了一些有关定位 new 表达式的知识点。最后总结了 mal…

C++练级之路——类和对象(上)

1、类的定义 class 类名{//成员函数 //成员变量}; class为定义的关键字,{ }内是类的主体,注意后面的 ; 不要忘了 类体中的内容成为类的成员,类中的变量为成员变量或类的属性,类中的函数为成员函数或类的方法, 类的两种…

Prompt最佳实践|大模型也喜欢角色扮演?

在OpenAI的官方文档中已经提供了Prompt Enginerring的最佳实践,目的就是帮助用户更好的使用ChatGPT 编写优秀的提示词我一共总结了9个分类,本文讲解第2个分类:要求模型扮演角色 提供更多的细节要求模型扮演角色使用分隔符指定任务步骤提供样…

OPC UA遇见chatGPT

最近opc 基金会将召开一个会议,主题是”OPC UA meets IT“。由此可见,工业自动化行业也开始研究和评估chatGPT带来的影响了。 本文谈谈本人对OPC UA 与chatGPT结合的初步实验和思考。 构建OPC UA 信息模型 chatGPT 的确非常强大了,使用自然…

前端开发之el-table(vue2中)固定列fixed滚动条被固定列盖住

固定列fixed滚动条被固定列盖住 效果图前言解决方案 效果图 前言 在使用fixed固定列的时候会出现滚动条被盖住的情况 解决方案 改变el-table固定列的计算高度即可 .el-table {.el-table__fixed-right,.el-table__fixed {height:auto !important;bottom:15px !important;}}

安装cuda后只在root用户下可见,非root不可见问题

0. 安装cuda和nvidia driver步骤可以参考这篇: https://blog.csdn.net/mygugu/article/details/137474101?spm1001.2014.3001.5502 1.问题记录: 这里记录下安装cuda后遇到的一个奇葩问题,因为安装过程需要root权限,安装后发现…

k8s部署efk

环境简介: kubernetes: v1.22.2 helm: v3.12.0 elasticsearch: 8.8.0 chart包:19.10.0 fluentd: 1.16.2 chart包: 5.9.4 kibana: 8.2.2 chart包:10.1.9 整体架构图: 一、Elasticsearch安装…

Git入门实战教程之创建版本库

一、Git简介 Git是一个分布式版本控制系,分层结构如下: Git分为四层: 1、工作目录 当前正在工作的项目的实际文件目录,我们执行命令git init时所在的地方,也就是我们执行一切文件操作的地方。 2、暂存区 暂存区是…

字符串2s总结

4.字符串 字符串理论基础 什么是字符串 字符串是若⼲字符组成的有限序列,也可以理解为是⼀个字符数组,但是很多语⾔对字符串做了特殊的规定,接下来我来说⼀说C/C中的字符串。 在C语⾔中,把⼀个字符串存⼊⼀个数组时&#xff0c…

前端开发学习笔记 3 (Chrome浏览器调试工具、Emmet语法、CSS复合选择器、CSS元素选择模式、CSS背景)

文章目录 Chrome浏览器调试工具Emmet语法CSS复合选择器后代选择器子选择器并集选择器伪类选择器 CSS元素选择模式元素选择模式概述CSS块标签CSS行内标签CSS行内块标签CSS元素显示模式转换 CSS背景CSS背景颜色CSS背景图片CSS背景图片平铺CSS背景图片位置CSS背景图片固定CSS背景复…

如何高效学习Python编程语言

理解Python的应用场景 不同的编程语言有不同的发展历史和应用场景,了解Python主要应用在哪些领域对于学习它会有很大帮助。Python最初是一种通用脚本语言,主要用于系统级任务自动化。随着时间的推移,它逐步成为数据处理、科学计算、Web开发、自动化运维等众多领域的主要编程语…

第4章 Redis,一站式高性能存储方案,笔记问题

点赞具体要实现功能有哪些? 可以点赞的地方:对帖子点赞,对评论点赞点一次是点赞,再点一次是取消赞统计点赞的数量(计数,string),帖子被点赞的数量,某个用户被点赞的数量…