python中的时间处理模块(二):datetime模块之timedelta类详解
1、datetime模块
datatime模块是在time模块的基础之上做了封装,提供了更多更好用的类供我们使用,常用的有date、time、datetime、timedelta、tzinfo。但是为了更灵活的处理时间,最好是将time模块和datetime模块中的精髓学习到。
- ① date类:主要用于处理年、月、日;
- ② time类:主要用于处理时、分、秒;
- ③ datetime类:date类和time类的综合使用,可以处理年、月、日、时、分、秒;
- ④ timedelta类:主要用于做时间加减的;
- ⑤ tzinfo类:时区类;
- 注意:tzinfo类用的不多,也就不专门讲述了,如果有需要,可以自行学习。
2、timedelta类
使用timedelta可以很方便的在日期上做天days,小时hour,分钟minute,秒second,毫秒millisecond,微妙的时间计算microsecond。如果要进行年、月的加减,则需要另外的办法。
但是这个类的使用,一定要结合date类的对象 或 datetime类的对象使用。也就是说,一定是基于这两个类的对象,进行时间的加、减。
注意:timedelta不能单独和time类的对象结合使用,这个下面会做演示。
1)案例说明:分别创建date类、datetime类的对象,然后进行时间的加减;
① 分别创建date类、datetime这两个类的对象;
from datetime import *d = date(2012,12,12)
display(d)dt = datetime(2012,12,12,23,59,59)
display(dt)
结果如下:
② 利用date类的对象,配合timedelta,进行时间的加减;
date类主要是用于处理年、月、日的,因此对该对象进行时间的加、减,主要是做“日(天数)”的加减。
from datetime import *d = date(2012,12,12)
display(d)# 昨天
d1 = d + timedelta(days=-1)
display(d1)
# 明天
d2 = d + timedelta(days=1)
display(d2)
结果如下:
③ 利用datetime类的对象,配合timedelta,进行时间的加减;
datetime类主要是用于处理年、月、日、时、分、秒、毫秒、微妙的,因此对该对象进行时间的加、减,主要做“日(天数)”、“时”、“分”、“秒”、“毫秒”、“微秒”、的加减。
from datetime import *dt = datetime(2012,12,12,23,59,59)
display(dt)# 昨天
dt1 = dt + timedelta(days=-1)
display(dt1)
# 明天
dt2 = dt + timedelta(days=1)
display(dt2)
# 上一个小时
dt3 = dt + timedelta(hours=-1)
display(dt3)
# 下一个小时
dt4 = dt + timedelta(hours=1)
display(dt4)
# 上一秒
dt5 = dt + timedelta(seconds=-1)
display(dt5)
# 下一秒
dt6 = dt + timedelta(seconds=1)
display(dt6)
结果如下:
④ 直接利用time类的对象,做时间加、减,会报错;
from datetime import *t = time(23,59,59)
display(t)t1 = t + timedelta(hours=-1)
display(t1)
结果如下:
3、实例解析
1)计算两个日期相隔多少天
- date类中还有一个重要方法:d.sub(d1)和d.rsub(d1)方法;
- 作用:获得二个日期相差多少天;
- d.sub(d1):计算的是d减去d1的天数;
- d.rsub(d1):计算的是d1减去d的天数;
from datetime import *d = date(2020,1,9)
display(d)d1 = date(2020,2,8)
display(d1)x = d.__sub__(d1)
display(x)
display(x.days)y = d.__rsub__(d1)
display(y)
display(y.days)
结果如下:
2)计算两个日期相隔多少月
- 实际中,计算两个日期之间的月份,有如下两个思路:Ⅰ自然数的差,直接用月份相减,这种方式最简单粗暴;Ⅱ天数的差,月份 = 天数差 ➗ 30,最后在取整;
- 第一种方式很简单,我这里就不细说。下面注意讲述第二种方式的代码实现;
from datetime import *
import numpy as npd = date(2020,1,9)
display(d)d1 = date(2020,2,8)
display(d1)y = d.__rsub__(d1)
display(y)
display(y.days)diff_month = y.days / 30
display(diff_month)floor_diff_month = np.floor(diff_month)
display(floor_diff_month)
结果如下:
python中的时间处理模块(二):datetime模块之timedelta类详解相关推荐
- 站长在线Python精讲:在Python中使用split()方法分割、使用join()方法合并字符串详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中使用split()方法分割.使用join()方法合并字符串详解>.本知识点主要内容有:在Python中使用s ...
- python中与时间有关的对象-datetime、time、date
一.time模块 1.time.strptime :将时间字符串转化为时间类型 格式:time.strptime(string[string[, format]) 结果可以利用利用time.tm_ye ...
- python中int转换为时间戳_python日期和时间戳互相转化操作详解
Python中日期格式化是非常常见的操作,Python 中能用很多方式处理日期和时间,转换日期格式是一个常见的功能.Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时 ...
- python中str是什么_python的str()字符串类型的方法详解
字符串一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串,因为内存存数据是一个挨着一个存的,如果增加一个字符串的话,之前的老位置只有一个地方,不够,这是原理性的东西,在其他语言里面也一样 7 ...
- python中4j什么意思_Python学习:4.数据类型以及运算符详解
运算符 一.算数运算: 二.比较运算: 三.赋值运算 四.逻辑运算 五.成员运算 基本数据类型 一.Number(数字) Python3中支持int.float.bool.complex. 使用内置的 ...
- python中true是什么意思_Python解惑之True和False详解
前言 众所周知在Python 中常用的数据类型bool(布尔)类型的实例对象(值)就两个,真和假,分别用True和False表示.在if 条件判断和while 语句中经常用到,不过在Python2.x ...
- python中sleep函数用法_sleep函数函数介绍与使用方法详解
在一些竞猜的网站中,如果我们需要做一个定时执行的功能,比如有一道题,在十秒之内要完成,否则显示"您已超时",如果完成,则跳转到下一道题上面,而这中间有一个十秒的停顿,这样的功能是怎 ...
- python中for循环的代码_Python for循环及基础用法详解
Python 中的循环语句有 2 种,分别是 while 循环和 for 循环,前面章节已经对 while 做了详细的讲解,本节给大家介绍 for 循环,它常用于遍历字符串.列表.元组.字典.集合等序 ...
- python中pass语句的作用是_Python pass语句以及作用详解
在具体开发设计中,有时大家会先构建起程序流程的总体逻辑结构,可是临时不去完成一些细节,只是在这种地区加一些注释,层面之后再加上编码,请看下面的事例: age = int( input("输入 ...
最新文章
- 【No.5 类型转换导致的错误】
- MOSS 2010:Visual Studio 2010开发体验(14)——列表开发之事件接收器
- 基因组行业重大事件介绍
- c语言数码管数字时钟程序,数码管显示模拟8位时钟C语言程序设计
- 小程序分享到朋友圈功能_微信小程序开放分享到朋友圈功能
- 通过History Trends Unlimited通过统计笔记本Chrome浏览器Top10网页历史访问量(截止至2021.11.23)
- html列表用标记,html标记列表应用
- 数据结构:栈和列之如何用两个队列实现一个栈?两个栈实现一个队列?
- 激活anaconda的环境出现source: no such file or directory: activate
- 大数据_MapperReduce_协处理器_类似Mysql的触发器---Hbase工作笔记0024
- Java 反编译工具哪家强?对比分析瞧一瞧
- FFmpeg[11] - ffmpeg去除水印(图片和文字)
- 代码审查的必要性和最佳实践
- html按钮点击后无效,关于html中按钮的单击事件,第一次单击可以运行,再次单击不能运行的解决方法...
- 历年数学界菲尔兹奖及其得主简介
- 分子力学无法模拟化学键的断裂的原因
- 【谈判】——如何在博弈中获得更多
- ##Mysql数据库DQL查询工具的使用
- 迅雷快车旋风链接转换成普通链接工具
- ros中msg文件的bool类型并不会生成bool类型变量