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类详解相关推荐

  1. 站长在线Python精讲:在Python中使用split()方法分割、使用join()方法合并字符串详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中使用split()方法分割.使用join()方法合并字符串详解>.本知识点主要内容有:在Python中使用s ...

  2. python中与时间有关的对象-datetime、time、date

    一.time模块 1.time.strptime :将时间字符串转化为时间类型 格式:time.strptime(string[string[, format]) 结果可以利用利用time.tm_ye ...

  3. python中int转换为时间戳_python日期和时间戳互相转化操作详解

    Python中日期格式化是非常常见的操作,Python 中能用很多方式处理日期和时间,转换日期格式是一个常见的功能.Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时 ...

  4. python中str是什么_python的str()字符串类型的方法详解

    字符串一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串,因为内存存数据是一个挨着一个存的,如果增加一个字符串的话,之前的老位置只有一个地方,不够,这是原理性的东西,在其他语言里面也一样 7 ...

  5. python中4j什么意思_Python学习:4.数据类型以及运算符详解

    运算符 一.算数运算: 二.比较运算: 三.赋值运算 四.逻辑运算 五.成员运算 基本数据类型 一.Number(数字) Python3中支持int.float.bool.complex. 使用内置的 ...

  6. python中true是什么意思_Python解惑之True和False详解

    前言 众所周知在Python 中常用的数据类型bool(布尔)类型的实例对象(值)就两个,真和假,分别用True和False表示.在if 条件判断和while 语句中经常用到,不过在Python2.x ...

  7. python中sleep函数用法_sleep函数函数介绍与使用方法详解

    在一些竞猜的网站中,如果我们需要做一个定时执行的功能,比如有一道题,在十秒之内要完成,否则显示"您已超时",如果完成,则跳转到下一道题上面,而这中间有一个十秒的停顿,这样的功能是怎 ...

  8. python中for循环的代码_Python for循环及基础用法详解

    Python 中的循环语句有 2 种,分别是 while 循环和 for 循环,前面章节已经对 while 做了详细的讲解,本节给大家介绍 for 循环,它常用于遍历字符串.列表.元组.字典.集合等序 ...

  9. python中pass语句的作用是_Python pass语句以及作用详解

    在具体开发设计中,有时大家会先构建起程序流程的总体逻辑结构,可是临时不去完成一些细节,只是在这种地区加一些注释,层面之后再加上编码,请看下面的事例: age = int( input("输入 ...

最新文章

  1. 【No.5 类型转换导致的错误】
  2. MOSS 2010:Visual Studio 2010开发体验(14)——列表开发之事件接收器
  3. 基因组行业重大事件介绍
  4. c语言数码管数字时钟程序,数码管显示模拟8位时钟C语言程序设计
  5. 小程序分享到朋友圈功能_微信小程序开放分享到朋友圈功能
  6. 通过History Trends Unlimited通过统计笔记本Chrome浏览器Top10网页历史访问量(截止至2021.11.23)
  7. html列表用标记,html标记列表应用
  8. 数据结构:栈和列之如何用两个队列实现一个栈?两个栈实现一个队列?
  9. 激活anaconda的环境出现source: no such file or directory: activate
  10. 大数据_MapperReduce_协处理器_类似Mysql的触发器---Hbase工作笔记0024
  11. Java 反编译工具哪家强?对比分析瞧一瞧
  12. FFmpeg[11] - ffmpeg去除水印(图片和文字)
  13. 代码审查的必要性和最佳实践
  14. html按钮点击后无效,关于html中按钮的单击事件,第一次单击可以运行,再次单击不能运行的解决方法...
  15. 历年数学界菲尔兹奖及其得主简介
  16. 分子力学无法模拟化学键的断裂的原因
  17. 【谈判】——如何在博弈中获得更多
  18. ##Mysql数据库DQL查询工具的使用
  19. 迅雷快车旋风链接转换成普通链接工具
  20. ros中msg文件的bool类型并不会生成bool类型变量

热门文章

  1. 使用python破解简单的JavaScript加密的网站
  2. 整数反转----秦九昭算法
  3. PS-第十二天-PS色阶的使用原理浅谈
  4. 史沐凡的python学习笔记20220210
  5. 机器学习(一)——随机游走
  6. c语言双边滤波算法,浅析bilateral filter双边滤波器的理解
  7. 蓝桥杯 算法训练 Cowboys DP
  8. 智慧书-永恒的处世经典格言:241-280
  9. 我在京东做研发第五期:京东云自研服务器,如何将开发成本降低 60% 的同时还更低碳环保?
  10. pythonurllib新浪微博_Python登陆新浪微博