前言:
-
python 提供 时间模块datetime ,此处也是用的datetime做的测试,主要用到datetime下的时间 差函数 timedelta 。
-
如果有人问你昨天是几号,这个很容易就回答出来了。但是如果问你200天前是几号,就不是那么容易了。而在Python中datetime模块中的timedelta就可以很轻松给出答案。
timedelta 介绍:
- datetime.timedelta对象代表两个时间之间的时间差,两个date或datetime对象相减就可以返回一个timedelta对象。
-
timedelta 函数原码分析:
class datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
- 从构造函数的定义中可以看出,所有参数都是可选的,并且默认都是0。
- 参数的值可以是整数,浮点数,正数或负数。
- timedelta也有自己的一些属性和方法,可以通过dir(datetime.timedelta)查看。
- 针对时间存储,timedelta内部只能存储days,seconds,microseconds,
- 其他参数的值会自动按如下规则进行转换:
- n millisecond(毫秒)转换成 n*1000 microseconds(微秒) ------- 注:1000microseconds /millisecond
- n minute (分钟) 转换成 n*60 seconds ------- 注:60 seconds /minute
- n hour(小时) 转换成 n*3600 seconds ------- 注:3600 seconds /hour
- n week(周)转换成 n*7 days ------- 注:17 days /week
案例:
例如:编写一段程序,要求开始时间和结束时间,时间间隔3day 。
import datetime
start = datetime.datetime.now() # 指定当前时间为开始时间 。
end = start - datetime.timedelta(days=3) # 算法原理:结束时间 = 开始时间-3天的时间差print(start,end) # 打印开始,结束时间 。
结果:>> 2019-10-23 09:09:21.547759 2019-10-20 09:09:21.547759
print(start-end,type(start-end)) # 打印时间差,确认时间差类型。结果:>> 3 days, 0:00:00 <class 'datetime.timedelta'>