[TOC] >[success] # 把具体时间长度转换成秒---timedelta ~~~ from datetime import timedelta 将会帮你解决一下问题 ~~~ ~~~ 1.当我们得到一个2天10小时50分钟 的一个长度,求他的一共多少秒 2.当我们知道两个 固定的时间长度,我们对他做相加或者想减 3.当我们只想知道一个一个固定时间长度除了天以外的秒 4.当我们想知道这个时间单位一共是多少秒 ~~~ >[danger] ##### 对时间长度做计算,只能提取秒/天---timedelta ~~~ 1.这个timedelta功能可以处理后能得到的只有天days,和小时hours 2.seconds 属性只能求出除了天数以外的秒,例如下面2天6小时,打印的秒数实际上是3600 3.total_seconds() 根据名字就能看出得到的是总共所有的秒数 下面的案例实际秒数是194400.0 ~~~ ~~~ a = timedelta(days=2,hours=6) print(a.seconds/3600) print(a.total_seconds()/3600) print(a.days) 打印结果: 6.0 54.0 2 ~~~ >[danger] ##### 对时间长度,做运算------timedelta ~~~ 1.我么可以单独取出计算后的小时和天数 2.同样也可以使用seconds/total_seconds() ~~~ ~~~ a = timedelta(days=2,hours=6) b = timedelta(hours=4.5) c = a+b print(a, b, c, sep="\n") 打印结果: 2 days, 6:00:00 4:30:00 2 days, 10:30:00 ~~~ >[danger] ##### 一个具体日期和时间段做加减----timedelta ~~~ 1.我们有一个具体的时间,要计算这天往后的多少天或者多少秒后的日期也可以使用timedelta 2.注意的是 timedelta 并不是万能的,他只能处理一下单位的时间段 days, seconds, microseconds.,milliseconds, minutes, hours,weeks ~~~ ~~~ from datetime import timedelta from datetime import datetime a = datetime(2018, 2, 28,) print(a + timedelta(days=10)) print(a + timedelta(weeks=2)) 打印结果: 2018-03-10 00:00:00 2018-03-14 00:00:00 ~~~ >[danger] ##### 两个具体时间做加减运算---只能算出天数 ~~~ from datetime import datetime a = datetime(2018, 3, 28,) b = datetime(2018, 2, 28,) c = a-b print(a - b) print(c.days) ~~~ >[danger] ##### 当前时间---datetime.now() ~~~ from datetime import datetime print(datetime.now()) ~~~ >[danger] ##### 解决timedelta 不能加月份---relativedelta ~~~ from dateutil.relativedelta import relativedelta a = datetime(2018, 3, 28,) print(a+relativedelta(months=+1)) 打印结果: 2018-04-28 00:00:00 ~~~ >[danger] ##### 计算两个时间月份差 ~~~ a = datetime(2018, 3, 28,) b = datetime(2018, 2, 28,) c = relativedelta(b,a) print(c.months) 打印结果: -1 ~~~