python常用模块之time模块
time模块---时间的获取与转换
time模块是python最常用模块之一,它的方法有很多,以下是个人对其中常用方法的一些学习总结
开始之前python3 time模块的一些说明:
1. 在python中,共有3种表现时间的方式:
1) 时间戳(timestamp): 表示从1970年1月1日00:00:00开始按秒计算的偏移量,返回是float类型。
2) 时间元组(struct_time): 它共有9个元素,分别是年月日,时分秒, 一周的第几日,一年的第几日,下面列出时间元组各个元素
| 序号 | 字段 | 值 |
|---|---|---|
| 0 | tm_year 4位数年 | 2008 |
| 1 | tm_mon 月 | 1 到 12 |
| 2 | tm_mday 日 | 1到31 |
| 3 | tm_hour 小时 | 0到23 |
| 4 | tm_min 分钟 | 0到59 |
| 5 | tm_sec 秒 | 0到61 (60或61 是闰秒) |
| 6 | tm_wday 一周的第几日 | 0到6 (0是周一) |
| 7 | tm_yday 一年的第几日 | 1到366 |
| 8 | tm_isdst 夏令时 | -1, 0, 1, -1是决定是否为夏令时的旗帜 |
3)格式化时间(format string): 让时间以人眼更舒服的方式展示,以下列出了时间的format格式。
| 格式 | 说明 |
| %a | 本地(locale)简化星期名称 |
| %A | 本地完整星期名称 |
| %b | 本地简化月份名称 |
| %B | 本地完整月份名称 |
| %c | 本地相应的日期和时间表示 |
| %d | 一个月中的第几天(01 - 31) |
| %H | 一天中的第几个小时(24小时制,00 - 23) |
| %I | 第几个小时(12小时制,01 - 12) |
| %j | 一年中的第几天(001 - 366) |
| %m | 月份(01 - 12) |
| %M | 分钟数(00 - 59) |
| %p | 本地am或者pm的相应符 |
| %S | 秒(01 - 61) |
| %U | 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。 |
| %w | 一个星期中的第几天(0 - 6,0是星期天) |
| %W | 和%U基本相同,不同的是%W以星期一为一个星期的开始。 |
| %x | 本地相应日期 |
| %X | 本地相应时间 |
| %y | 去掉世纪的年份(00 - 99) |
| %Y | 完整的年份 |
| %Z | 时区的名字(如果不存在为空字符) |
| %% | ‘%’字符 |
2. UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。
3. DST(Daylight Saving Time)即夏令时。
python各种表示时间的方式
>>> import time >>> time.time() # 获取当地的当前时间戳 1542943785.5624244 >>> time.localtime() # 获取当前的当地时间元组 time.struct_time(tm_year=2018, tm_mon=11, tm_mday=23, tm_hour=11, tm_min=33, tm_sec=10, tm_wday=4, tm_yday=327, tm_isdst=0) >>> time.gmtime() # 将一个时间戳转化为UTC时区的时间元组,默认是0时区,中国要+8 time.struct_time(tm_year=2018, tm_mon=11, tm_mday=23, tm_hour=3, tm_min=33, tm_sec=39, tm_wday=4, tm_yday=327, tm_isdst=0)
>>> time.strftime('%Y/%m/%d %H:%M:%S') # 格式化显示时间
'2018/11/23 11:43:05'
时间的相互转换

>>> time.gmtime(15112345678) # 时间戳转时间元组 time.struct_time(tm_year=2448, tm_mon=11, tm_mday=21, tm_hour=9, tm_min=47, tm_sec=58, tm_wday=5, tm_yday=326, tm_isdst=0) >>> time.gmtime(1543000000) # 时间戳转时间元组 time.struct_time(tm_year=2018, tm_mon=11, tm_mday=23, tm_hour=19, tm_min=6, tm_sec=40, tm_wday=4, tm_yday=327, tm_isdst=0) >>> time.mktime(time.localtime()) # 时间元组转时间戳 1542945316.0 >>> time.strftime('%x %X', time.gmtime(1550000000)) ## 时间元组转format '02/12/19 19:33:20' >>> time.strptime('2012/5/18', '%Y/%m/%d') # format转时间元组 相当于字符串解析 time.struct_time(tm_year=2012, tm_mon=5, tm_mday=18, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=139, tm_isdst=-1)

>>> time.asctime(time.localtime(1540000000)) # 把时间元组转化为固定形式 'Sat Oct 20 09:46:40 2018' >>> time.ctime(1540000000) # 同上 把时间戳转化为星期 月 日 时间 年份的固定形式 'Sat Oct 20 09:46:40 2018'
time的其他方法:
time.sleep(secs): 推迟线程执行时间,单位秒
time.process_time(): 返回当前进程执行cpu的时间,不包含睡眠的时间,它并没有一个时间基准,只有两次调用的结果差值才有意义。
time.perf_counter(): 返回系统的运行时间,包含睡眠时间,它没有一个时间基准,只有两次调用的结果差值才有意义。
一般被用来计算程序运行时间
>>> def f(): ... t1 = time.time() ... time.sleep(0.5) ... print(time.time() - t1) ... >>> def f2(): ... t1 = time.perf_counter() ... time.sleep(0.5) ... print(time.perf_counter() - t1) ... >>> f() 0.5005972385406494 >>> f2() 0.5004439679905772

浙公网安备 33010602011771号