首页 > 编程语言 >Python学习笔记:timedelta类相关函数

Python学习笔记:timedelta类相关函数

时间:2022-11-20 23:44:47浏览次数:65  
标签:__ begin end timedelta Python 笔记 seconds time

一、介绍

timedelta 类表示时间差,可以直接实例化,也可以由两个 datetime 类型的数据作差得到。

缘起于求两个时间差,并需要转换为特定的单位(天、小时、分钟等),遂产生此需求。

二、导入

导入具体模块为:

from datetime import timedelta

参数为:

# days seconds microseconds milliseconds minutes hours weeks

# 实例化
td = timedelta(days=1, hours=8)
# datetime.timedelta(days=1, seconds=28800)

print(td)
# 1 day, 8:00:00

通过以下可以查看相应属性和方法。

dir(timedelta)
'''
['__abs__',
 '__add__',
 '__bool__',
 '__class__',
 '__delattr__',
 '__dir__',
 '__divmod__',
 '__doc__',
 '__eq__',
 '__floordiv__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__mod__',
 '__mul__',
 '__ne__',
 '__neg__',
 '__new__',
 '__pos__',
 '__radd__',
 '__rdivmod__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__rfloordiv__',
 '__rmod__',
 '__rmul__',
 '__rsub__',
 '__rtruediv__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__sub__',
 '__subclasshook__',
 '__truediv__',
 'days',
 'max',
 'microseconds',
 'min',
 'resolution',
 'seconds',
 'total_seconds']
'''

三、实例

# 导入模块
from datetime import timedelta, datetime

begin_time = '2022-11-20 23:16:00'
end_time = '2022-11-25 15:16:17'

# 转换为时间格式
begin_time = datetime.strptime(begin_time, '%Y-%m-%d %H:%M:%S')
end_time = datetime.strptime(end_time, '%Y-%m-%d %H:%M:%S')

# 求时间差
print(end_time - begin_time)
# 4 days, 16:00:17

1.days 天数

返回时间差的天数。

(end_time - begin_time).days # 4

2.seconds 秒数

返回时间差的秒数。

注意:此秒数并非整体时间差,而是时间部分的秒数!

(end_time - begin_time).seconds # 57617

3.microseconds 毫秒数

返回时间差的毫秒数。

(end_time - begin_time).microseconds # 0
# 因为原始数据没有毫秒

dayssecondsmicroseconds 输出的是时间差对应位置的分量,而不是讲时间差转换单位的结果。

4.min 下限

返回时间差的下限(无论timedelta对象是什么返回都一样)。

(end_time - begin_time).min # datetime.timedelta(days=-999999999)

print((end_time - begin_time).min) # -999999999 days, 0:00:00

5.max 上限

返回时间差的上限(无论timedelta对象是什么返回都一样)。

(end_time - begin_time).max #  datetime.timedelta(days=999999999, seconds=86399, microseconds=999999)

print((end_time - begin_time).max) # 999999999 days, 23:59:59.999999

6.resolution 精度

返回时间差的精度。

(end_time - begin_time).resolution # datetime.timedelta(microseconds=1)

print((end_time - begin_time).resolution) # 0:00:00.000001

7.total_seconds 总秒数

toal_secondstimedelta 对象的唯一一个方法。

将时间差转换为秒的单位进行返回。

后续如需转换为其他单位需自行乘以相应的系数。

(end_time - begin_time).total_seconds() # 403217.0

工作中常在数据框中进行转换。

# 转换单位
data['时间_diff_day'] = data['时间_diff'].map(lambda x: x.days)
data['时间_diff_second'] = data['时间_diff'].map(lambda x: x.total_seconds())
data['时间_diff_hour'] = data['时间_diff_second'] / 3600

注意 total_seconds 为方法,需要加括号,其他为属性,无须添加括号。

参考链接:【Python】timedelta类详解

参考链接:datetime.timedelta类介绍

标签:__,begin,end,timedelta,Python,笔记,seconds,time
From: https://www.cnblogs.com/hider/p/16910063.html

相关文章

  • NUCLEO-F767ZI以太网功能实现笔记本电脑不开盖开机
    NUCLEO-F767ZI以太网功能实现笔记本电脑不开盖开机不想打开笔记本盖子按开机按钮开机?可以使用Wake-on-LAN远程唤醒。这里展示怎么用NUCELO-F767ZI以太网功能发送MagicPacket......
  • Spring学习笔记 - 第一章 - IoC(控制反转)、IoC容器、Bean的实例化与生命周期、DI(依赖注
    Spring学习笔记全系列传送门:目录1、学习概述2、Spring相关概念2.1Spring概述2.1.1Spring能做的工作2.1.2重点学习的内容2.1.3Spring发展史2.2Spring系统架构2.2.1......
  • python中pip install -U -i是个啥意思?
    比如说:pipinstall-Ucelery-ihttps://pypi.tuna.tsinghua.edu.cn/simple这里面,-U代表的是升级原来已经安装的包,不带U不会装新版本,带上U才会更新到最新版本......
  • python函数进阶
    #1.函数的作用域#全局变量的作用域:#一般在函数体外定义的变量成为全局变量,在函数内部定义的变量称为局部变量。#全局变量所有作用域都可用,局部变量只能在本函数可......
  • 【学习笔记】【DPDK】What RTE flow rules can your NIC offload?
    【DPDK】WhatRTEflowrulescanyourNICoffload?文档地址:https://static.sched.com/hosted_files/dpdkuserspace22/5c/rte_flow_checker_presentation.pdf视频地址:......
  • 为了删除数万封邮件,使用python模拟鼠标自动点击删除
    公司的企业邮箱有段时间不知道为啥没有删除服务器上的邮件,屯了几万封。登陆企业邮网站,又不好清空邮箱,只能每次一页删除100封,光靠鼠标在那里点,真的费时费力。于是写了个pyth......
  • kafka笔记
    基本概念Broker每个Broker相当于一个服务器,多个Broker构成了一个kafka集群Topic主题做消息分类,一个Broker可以包含多个TopicPartition分区,一个Topic包含多个分区,分区......
  • python爬取招聘网岗位(仅供学习)
    1、某某**集招**信息2、使用到了requests,bs4,openpyxl,time模块(1)分析页面,发送请求,并把请求返回定义为一个模块。url='https://***.*****.com/company/{0}/jobs/?n={1}'.f......
  • PYTHON编写程序练习-打印99乘法表
     使用for循环嵌套的知识点编写foriinrange(1,10):  #第一层循环,循环乘数forjinrange(1,i+1):  #第二层循环,循环被乘数print(f"{i}x{j}="+......
  • dockerfile学习笔记
    FROM指定基础镜像MAINTAINER指定维护者的信息,可以没有RUN 你想让它干啥(在命令前面加上RUN即可)ADD 添加宿主机的文件到容器内COPY复制文件WORKDIR 设置当前工......