Python的datetime模块是一个强大的日期和时间处理库,它提供了多个类来处理日期和时间。主要包括几个功能类datetime.date、datetime.time、datetime.datetime、datetime.timedelta,datetime.timezone等。
使用datetime模块
要使用 datetime模块,直接导入它即可。
import datetime 或者 from datetime import time,datetime,date,timedelta
timedelta类
datetime.timedelta用于表示两个日期或时间之间的差异(即时间间隔)。它通常用于日期的算术运算,比如计算一个日期加上或减去一定的时间间隔后的新日期。
timedelta 对象初始化参数包含天(day)、秒(second)、微秒(microsecond)、毫秒(milliseconds、分钟(minutes)、小时(hours)、星期(weeks)时间单位,但是上述参数初始化时星期会转化为天数,分钟和小时会转为秒数,毫秒会转为微秒,如下红框所示:
该类初始化后,可直接调用如下的属性函数获得对应的参数值
举例:timedelta类按照如下参数初始化
timedelta_ins= timedelta(days=10, seconds=30,microseconds=1000,
milliseconds=1,minutes=1, hours=1,weeks=1)
print(timedelta_ins.days)
print(timedelta_ins.seconds)
print(timedelta_ins.microseconds)
执行结果:
17
3690
2000
根据上述红框中的计算公式验算如下:
days = 10 + 1*7 = 17
seconds= 30 + 1*60 +1*60 = 3690
microseconds = 1000 + 1*1000 = 2000
1 timedelta配合datetime.date进行日期的加减运算
在datetime.date(只涉及年,月,日)日期基础上计算n天前或者n天后对应的日期。
举例:
- 计算当前日期在1个星期后对应的日期
date_ins = date.today()
print(date_ins + timedelta(weeks=1))
结果:2024-09-21
- 计算某个日期在50天后对应的日期
date_ins = datetime.date(2024,9,1)
print(date_ins + datetime.timedelta(days=50))
结果:2024-10-21
- 计算某个日期在50天前对应的日期
date_ins = datetime.date(2024,9,1)
print(date_ins + datetime.timedelta(days=-50))
结果:2024-07-13
- 计算某个日期在7个星期后对应的日期
date_ins = date(2024,9,1)
print(date_ins + timedelta(weeks=7))
结果:2024-10-20
- 计算某个日期在435个小时后对应的日期
date_ins = date(2024,9,1)
print(date_ins + timedelta(hours=435))
结果:2024-09-19
2 timedelta配合datetime.daterime进行日期的加减运算
在datetime.datetime(涉及年,月,日,小时,分钟,秒,微秒)时间基础上计算某个时间后对应的时间。
举例:
- 计算当前时间在50天后对应的时间
date_ins = datetime.today()
print(date_ins + timedelta(days=50))
结果:2024-11-03 10:11:02.663574
- 计算某个时间在50天2小时后对应的时间
from datetime import datetime,timedelta
date_ins = datetime(2024,month=9,day=5,hour=21,minute=34,
second=25,microsecond=10000)
print(date_ins + timedelta(days=50,hours=2))
结果:2024-10-25 23:34:25
- 计算某个时间在50天前对应的时间再加上2小时20分
from datetime import datetime,timedelta
date_ins = datetime(2024,month=9,day=5,hour=21,minute=34,
second=25,microsecond=10000)
print(date_ins + timedelta(days=-50,hours=2,minutes=20))
结果:2024-07-17 23:54:25
- 计算某个时间加上1小时10秒1万微秒后对应的时间
from datetime import datetime,timedelta
date_ins = datetime(2024,month=9,day=5,hour=21,minute=34,
second=25,microsecond=10000)
print(date_ins + timedelta(hours=1,seconds=10,microseconds=10000))
结果:2024-09-05 22:34:35.020000
datetime.datetime和 datetime.timedelta配合使用后,有很多种时间计算方式,此处不再一一列举。
3 timedelta类计算时间之差
不用配合detetime。datetime和 datetime.date类,timedelta类本身也可以计算两个时间的间隔
举例:实例化两个类对象,timedelta_ins1 时间大于timedelta_ins2
timedelta_ins1 = timedelta(hours=1,seconds=20,microseconds=10000,weeks=2)
timedelta_ins2 = timedelta(days=6,hours=23,seconds=10,microseconds=10000)
print(timedelta_ins1 - timedelta_ins2)
结果:7 days, 2:00:10
4 total_seconds()
该函数返回timedelta类初始化对象对应的秒数。计算公式如下:
举例:
timedelta_ins = timedelta(hours=1,seconds=10,microseconds=10000)
print(timedelta_ins.total_seconds())
结果:3610.01
5 比较时间大小
正因为timedelta类有__eq__,__lt__等魔法方法,所以具备大小比较的功能。
测试代码:实例化两个类对象,timedelta_ins1 时间大于timedelta_ins2
timedelta_ins1 = timedelta(hours=1,seconds=10,microseconds=10000,weeks=1)
timedelta_ins2 = timedelta(days=6,hours=23,seconds=10,microseconds=10000)
print(timedelta_ins1 < timedelta_ins2)
比较结果:False
共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”
-----指水滴不断地滴,可以滴穿石头;
-----比喻坚持不懈,集细微的力量也能成就难能的功劳。
----感谢读者的阅读和学习,谢谢大家。