标准库time、datetime、calendar、random的使用(一)

time

首先通过import timefrom 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 - yx.sub(y)
rsub(…)y - xx.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)

······

其余四类具体戳这里

参考文献:
参考一
参考二
参考三

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值