Python日期时间差的计算(天/小时/分钟)及timedelta函数的使用(附python代码)
背景描述
数据分析中会遇到日期、时间的计算,主要包括以下几种情况:
- 对2个日期进行时间差值的计算或与目标时长进行比较,如:计算天数(days)、小时数(hours)、分钟数(minutes),秒数(seconds)等
- 对已知日期进行转换,增加或减少天数(days)、小时数(hours)等,如计算昨天的日期,半年后的日期等
- 提取日期中的年份、月份和日子等信息
本文主要针对问题1和问题2,关于问题3,请查看博文:“python提取年月日遇到的问题”(链接:添加链接描述)
解决方法:
- 对2个日期进行时间差值的计算:
将日期都转换为datetime类 --》2个日期直接进行运算(如加减)–》对计算差值进行天数(days)和秒数(seconds)的提取 - 对已知日期进行转换,如增加或减少(天/小时/分钟):使用timedelta()函数来解决
示例代码(Python):
1. 对2个日期进行时间差值的计算
1.1 对直接输入的日期进行时间差计算
import numpy as np
import pandas as pd
from datetime import *# 输入2个日期
date1 = "2022.05.11 13:30:00"
date2 = "2022.05.10 12:00:00"# 将输入的日期转换为“datetime.datetime”类型
# 由于日期的类型是字符串,因此不能直接进行计算,会报错
date1 = datetime.strptime(date1, "%Y.%m.%d %H:%M:%S")
date2 = datetime.strptime(date2, "%Y.%m.%d %H:%M:%S")
print(" date1:", date1, "\n" ,"date2:", date2)
print(" 2个日期的类型分别是:\n", type(date1), type(date2))
# 计算时间差:时间差的类型为“datetime.timedelta”类型
duration = date1 - date2
duration
# 对计算差值进行天数(days)和秒数(seconds)的提取,并将秒数转换为小时数
day = duration.days
hour = duration.seconds/3600
print("days:", day)
print("hours:", hour)
小结:
- 由于计算的时间差需要精确到小时/分钟/秒等,因此需要将日期类型转换为“datetime.datetime类型”后进行计算。
- 运算得到的时间差值,其类型为“datetime.timedelta”,包括2部分:days: 多少天,seconds: 多少秒。
- 时间差值的提取:天数(days)= durations.days; 秒数(seconds)= durations.seconds,
可根据提取出来的秒数再换算为多少小时或多少分钟。
1.2 DataFrame的时间差计算
import pandas as pd
from datetime import *# 建立计算时间差的数据表(Dataframe)
li = [["2021-05-6 10:00:00", "2022-05-10 08:30:00"], ["2022-05-7 08:30:00", "2022-05-10 12:30:00"], ["2022-05-9 12:00:00", "2022-05-10 14:30:00"]]
df = pd.DataFrame(li, columns=["date1", "date2"])# 将数据数据转换为“datetime.datetime类型”
df.date1 = df.date1.map(lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S"))
df.date2 = df.date2.map(lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S"))
df
# 计算时间差
df["duration"] = df.date2 - df.date1# 对计算差值进行天数(days)和秒数(seconds)的提取,并将秒数转换为小时数
df["day"] = df.duration.map(lambda x: x.days)
df["hour"] = df.duration.map(lambda x: x.seconds/3600)
df
小结
- 在Dataframe中用同样的方法也能计算出两列日期时间的差值,包括天数和小时数,并且跨年度的计算也是可以的
- 日常工作中,可以使用提取出来的天数/小时数等与目标时长进行比较,建立效率评估指标(如:按时接收率%,商家正确揽收率%等)
2. 对已知日期进行增减计算(天/小时/分钟):使用timedelta()函数来解决
2.1 timedelta()函数的简介
timedelta()函数的构造:
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
对参数设定具体的值,达到计算的要求,如:
设定:days=1 – 在原有时间上增加1天;
设定:minutes=-30 – 在原有时间上减少30分钟
2.2 timedelta()函数的使用
# 1. timedelta()的基本用法
dt1 = datetime(2022, 5, 12, 8, 30, 0)
dt2 = dt1 + timedelta(days = 1)
dt3 = dt1 + timedelta(minutes = -30)
print("dt1:", dt1)
print("dt2:", dt2)
print("dt3:", dt3)
# 2. timedelta在dataframe中使用是,有广播的作用
li = [["2022-05-6 10:00:00", "2022-05-10 08:30:00"], ["2022-05-7 08:30:00", "2022-05-10 12:30:00"], ["2022-05-9 12:00:00", "2022-05-10 14:30:00"]]
df = pd.DataFrame(li, columns=["date1", "date2"])
df.date1 = df.date1.map(lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S"))
df.date2 = df.date2.map(lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S"))
df["var1"] = df.date1 + timedelta(hours=1)
df["var2"] = df.date2 + timedelta(days=30)
df
Python日期时间差的计算(天/小时/分钟)及timedelta函数的使用(附python代码)相关推荐
- java 根据日期计算当前周一和周日,及根据秒数计算天小时分钟秒数等相关日期
日期工具类 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; ...
- Java日期-时间差的计算及获取日期中的年月日
Java计算时间差.日期差的计算: 1.java 7中的日历类Calendar Calendar类使用其静态的getInstance()方法获取一个日历实例,该实例为当前的时间:如果想改变时间,可以通 ...
- 日期时间差的计算--C++
实现方法:将时间点转换成基于当前系统的日期时间节点,分别得到一个较大的整数,然后做差值计算得到时间差,之后将这个以秒为单位的时间差转换成日期时间差.以下是实现代码. 主函数 #include < ...
- python 相关性检验怎么计算p值_收藏 | 大神教你用Python预测未来:一文看懂时间序列...
(由Python大本营付费下载自视觉中国) 作者 | Leandro Rabelo 译者 | 李洁 整理 | Lemonbit 出品 | Python数据之道 本文内容较长,较为详细的阐述了进行时间 ...
- 《从问题到程序:用Python学编程和计算》——3.4 定义函数
本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第3章,第3.4节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3. ...
- python运算符中用来计算整商的是什么_零基础学python,看完这篇文章,你的python基础就差不多了...
Python基础语法 1. 认识Python 1.1 Python 简介 Python 的创始人为吉多·范罗苏姆(Guido van Rossum). Python 的设计目标: 一门简单直观的语言并 ...
- Python入门小项目-计算阶乘n的三种方法+常见练习(含代码示例)
今天的文章主要给各位整理了Python常见的集中计算练习,这些也是作为初学者必会的联系项目了,代码分享出来,需要的朋友们可以看下~ 一.计算阶乘n! 整数的阶乘(英语:factorial)是所有小于及 ...
- python 覆盖list_这套python 面试题你还没有?保证让你面试通关《附Python源码+实战项目》...
随着Python在企业中的应用越来越多,岗位需求越来越大,面试成为了搞定优质职位的快速方式,下面是笔者面试10余家企业总结的面试题,希望对Python从业者有帮助. 介绍一下Python的数据结构,并 ...
- Opencv+Python学习记录9:掩膜(掩码)的使用(内附详细代码)
一,基本概念 OpenCV中的很多函数都会指定一个掩模,也被称为掩码,例如: 计算结果=cv2.add(参数1,参数2,掩模) 当使用掩模参数时,操作只会在掩模值为非空的像素点上执行,并将其他像素点的 ...
最新文章
- Mac用Java写出hello,mac中c#的helloworld
- jQuery easyUI--消息框的使用
- 轻量级消息队列RedisQueue
- RTT大牛告诉你,混合微内核是什么?
- LeetCode 39. 组合总和(排列组合 回溯)
- 苹果要做第一个吃螃蟹的人!将率先尝试台积电5nm工艺
- Python迭代器(Iterator)
- 基于OpenGL的贪吃蛇游戏设计与实现
- Norton Ghost V12
- solidworks 显示设计库图标
- Chmox - Mac下的CHM电子书阅读器
- 古诗词网站源码 php,帝国cms 诗词整站源码
- C语言 简单走迷宫小游戏
- Assertion failed: Protocol wrong type for socket [10041] zeromq 4.3.1\src\ip.cpp:417)错误
- 苹果6p计算机在哪里设置方法,苹果手机怎么设置铃声【图文教程,不用电脑,1分钟完成】...
- 编程术语晦涩_晦涩的今日非主流提示-如何将Windows资源管理器文件复制/移动到“全部同意”或“全部否”...
- html title中加图标,科技常识:HTML中title前面小图标的实现_如何给网页标题添加icon小图标...
- 搭建rtmp直播流服务之1:使用nginx搭建rtmp直播流服务器(nginx-rtmp模块的安装以及rtmp直播流配置)
- Intellij IDEA 将.java文件识别成文本文档
- 1.3 练习: 画内存分析图
热门文章
- mysql实现postgres中pg_size_pretty函数
- git pul的使用
- 2019企业发布会最新震撼大气开场舞蹈 《全息未来已来》全息投影舞蹈 创意3D科技互动视频秀 企业舞蹈编排
- liunx 查看oracle监听,Linux配置Oracle监听提示异常
- Python 爬虫基础
- 使用 Vue 脚手架
- VxWorks操作系统shell命令与调试方法总结
- SaaS 服务供应商Wynd获3170万美元B轮融资
- mysql stdistance_C#开发SQLServer的Geometry和Geography存储
- 官宣!1024 程序员节日程发布,第一代程序员求伯君将出席大会