time
首先通过import time
或from time import *
调用time库
time库函数分为3类:
? 获取时间
? 设置时间格式
? 程序计时
(一)获取时间
1.time()
返回当前时间的时间戳(1970纪元后经过的浮点秒数)
>>> time()
1554614930.8956587
2.ctime()
返回易读时间格式的函数
>>> ctime()
'Sun Apr 7 13:31:06 2019'
3.gmtime()
获取当前时间,表示计算机可以处理的时间格式
>>> gmtime()
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=7, tm_hour=5, tm_min=32, tm_sec=55, tm_wday=6, tm_yday=97, tm_isdst=0)
(二)时间格式化
1.strftime()
语法:strftime(tpl,ts)
tpl是格式化模版字符串,用来定义输出效果,ts是计算机可以处理的时间格式,也就是用time.gmtime()函数获取到的时间。
>>> t = gmtime()
>>> strftime("%Y-%m-%d %H-%M-%S",t)
'2019-04-07 05-39-14
时间格式化控制符如下:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
2.strptime()
语法:strptime(timeStr,tpl)
生成一个计算机可以处理的时间格式
t = gmtime()
m = strftime("%Y-%m-%d %H-%M-%S",t)
>>> strptime(m,"%Y-%m-%d %H-%M-%S")
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=7, tm_hour=5, tm_min=39, tm_sec=14, tm_wday=6, tm_yday=97, tm_isdst=-1)
(三)程序计时
1.perf_counter()
测量时间,可以计量动作起止过程中经历的时间
用来标识当前CPU时间tag,需要多次调用才能计算出经历的时间长度
>>> perf_counter()
8.205121472720843e-07
2.sleep(s)
产生时间,让程序休眠
让程序休眠s秒,s可以是浮点数
>>> print(("Start : {}" ).format(ctime()));sleep(5);print(("End : {}" ).format(ctime()))
Start : Sun Apr 7 13:50:34 2019
End : Sun Apr 7 13:50:39 2019
datetime
datetime模块包含以下六类:
类名 | 功能 |
---|---|
date | 日期对象,常用的属性有year, month, day |
time | 时间对象 |
datetime | 日期时间对象,常用的属性有hour, minute, second, microsecond |
datetime_CAPI | 日期时间对象C语言接口 |
timedelta | 时间间隔,即两个时间点之间的长度 |
tzinfo | 时区信息对象 |
(一)date类
date类由year、month、day构成
>>> import datetime
>>> a = datetime.date.today();a
datetime.date(2019, 4, 7)
>>> a.year
2019
>>> a.month
4
>>> a.day
7
1.用于日期比较大小的方法
方法名 | 方法说明 | 用法 |
---|---|---|
eq(…) | 等于(x==y) | x.eq(y) |
ge(…) | 大于等于(x>=y) | x.ge(y) |
gt(…) | 大于(x>y) | x.gt(y) |
le(…) | 小于等于(x<=y) | x.le(y) |
lt(…) | 小于(x<y) | x.lt(y) |
ne(…) | 不等于(x!=y) | x.ne(y) |
返回值为布尔类型
>>> a = datetime.date(2019,4,22)
>>> b = datetime.date(2019,10,13)
datetime.date(2019, 10, 13)
>>> a.__ne__(b)
2.获得二个日期相差多少天
方法名 | 方法说明 | 用法 |
---|---|---|
sub(…) | x - y | x.sub(y) |
rsub(…) | y - x | x.rsub(y) |
>>> a
datetime.date(2019, 4, 22)
>>> b
datetime.date(2019, 10, 13)
>>> a.__sub__(b)
datetime.timedelta(-174)
>>> a.__sub__(b).days
-174
通过加后缀.days
,使返回值为整数,否则为datetime.timedelta
3.ISO标准化日期
如果想要让所使用的日期符合ISO标准,那么使用如下三个方法:
? isocalendar(…)
返回一个包含三个值的元组,三个值依次为:0: 年份,1: 周数,2: 星期数(周一为1…周日为7)
>>> a
datetime.date(2019, 4, 22)
>>> a.isocalendar()[0]
2019
>>> a.isocalendar()[1]
17 #22号是2019年第17周
>>> a.isocalendar()[2]
1 #22号是周一
? isoformat(…)
返回符合ISO 8601标准 (YYYY-MM-DD) 的日期字符串
>>> a
datetime.date(2019, 4, 22)
>>> a.isoformat()
'2019-04-22'
? isoweekday(…)
返回符合ISO标准的指定日期所在的星期数(周一为1…周日为7)
>>> a
datetime.date(2019, 4, 22)
>>> a.isoweekday()
1
4.其他
? timetuple(…)
该方法为了兼容time.localtime(…)返回一个类型为time.struct_time的数组,但有关时间的部分元素值为0
>>> a
datetime.date(2019, 4, 22)
>>> a.timetuple()
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=112, tm_isdst=-1)
>>> a.timetuple().tm_year
2019
>>> a.timetuple().tm_mon
4
>>> a.timetuple().tm_mday
22
? toordinal(…)
返回公元公历开始到现在的天数。公元1年1月1日为1
>>> a
datetime.date(2019, 4, 22)
>>> a.toordinal()
737171
? replace(…)
返回一个替换指定日期字段的新date对象。参数3个可选参数,分别为year,month,day。
注意替换是产生新对象,不影响原date对象。
>>> a
datetime.date(2019, 4, 22)
>>> c = a.replace(2019,7,17)
>>> a
datetime.date(2019, 4, 22)
>>> c
datetime.date(2019, 7, 17)
? resolution
date对象表示日期的最小单位
>>> datetime.date.resolution
datetime.timedelta(1)
? fromordinal(…)
将Gregorian日历时间转换为date对象
Gregorian Calendar :一种日历表示方法,类似于我国的农历,西方国家使用比较多
>>> a
datetime.date(2019, 4, 22)
>>> d = a.toordinal()
>>> d
737171
>>> datetime.date.fromordinal(d)
datetime.date(2019, 4, 22)
? fromtimestamp(…)
根据给定的时间戮,返回一个date对象
>>> time()
1554624856.9557543
>>> datetime.date.fromtimestamp(time())
datetime.date(2019, 4, 7)
? today(…)
返回当前日期
>>> datetime.date.today()
datetime.date(2019, 4, 7)
(二) time类
time类由hour小时、minute分钟、second秒、microsecond毫秒和tzinfo五部分组成
#time类中应存在以上五个参数
>>> a = datetime.time(16,21,30,122)
>>> a.hour
16
>>> a.minute
21
>>> a.second
30
>>> a.microsecond
122
1.比较时间大小
与date类的基本一样,就不作具体描述
2.__nonzero__(...)
判断时间对象是否非零,返回值为True/False:
>>> a = datetime.time(12,20,59,899)
>>> a.__nonzero__()
True
3.其他
? max
最大的时间表示数值
>>> datetime.time.max
datetime.time(23, 59, 59, 999999)
? min
最小的时间表示数值
>>> datetime.time.min
datetime.time(0, 0)
······