python3_time模块详解
python提供的时间模块time是需要单独引入:
1、time.sleep(secs)# 推迟调用线程的运行,secs指的是秒
time.sleep(secs)
2、time.time():返回当前时间的时间戳
时间戳都是从1970年1月1日午夜经过了多久时间来表示,时间间隔是以秒为单位的浮点小数
1 import time 2 3 ticks = time.time() 4 print("当前时间戳为:", ticks)
当前实际运行结果:
当前时间戳为: 1509945397.5449631
时间戳最适合做日期的运算。
1970年之前的无法以此计算,unix支持到2038年,所以之后的也不行。
struct_time元组
python用该元祖装起来的9组数字处理时间:
3、time.localtime([secs]):将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准
import time localtime = time.localtime(time.time())
#localtime = time.localtime() print("本地时间为 :", localtime) 以上实例输出结果: 本地时间为 : time.struct_time(tm_year=2017, tm_mon=11, tm_mday=6, tm_hour=13, tm_min=38, tm_sec=32, tm_wday=0, tm_yday=310, tm_isdst=0)
4、time.gmtime([secs]):和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。
>>>time.gmtime()
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=6, tm_hour=7, tm_min=24, tm_sec=0, tm_wday=0, tm_yday=310, tm_isdst=0)
5、time.asctime([t])格式化的时间:把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。如果没有参数,将会将time.localtime()作为参数传入:
1 import time 2 3 localtime = time.asctime(time.localtime(time.time())) 4 print("本地时间为 :", localtime) 5 6 以上实例输出结果: 7 本地时间为 : Mon Nov 6 13:49:41 2017
格式化日期:
#! /usr/bin/python3 import time # 格式化成2017-11-06 13:56:12形式 print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) # 格式化成Mon Nov 06 13:59:42 2017形式 print(time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())) # 将格式字符串转换为时间戳,time.mktime(t):将一个struct_time转化为时间戳 a = "Mon Nov 06 13:59:42 2017" print(time.mktime(time.strptime(a, "%a %b %d %H:%M:%S %Y"))) 以上实例输出结果: 2017-11-06 14:02:32 Mon Nov 06 14:02:32 2017 1509947982.0
6、time.clock():
这个需要注意,在不同的系统上含义不同。在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间。(实际上是以WIN32上QueryPerformanceCounter()为基础,它比毫秒表示更为精确)
以前看代码比较头疼的%
python中时间日期格式化符号:
1 %y 两位数的年份表示(00-99) 2 %Y 四位数的年份表示(000-9999) 3 %m 月份(01-12) 4 %d 月内中的一天(0-31) 5 %H 24小时制小时数(0-23) 6 %I 12小时制小时数(01-12) 7 %M 分钟数(00=59) 8 %S 秒(00-59) 9 %a 本地简化星期名称 10 %A 本地完整星期名称 11 %b 本地简化的月份名称 12 %B 本地完整的月份名称 13 %c 本地相应的日期表示和时间表示 14 %j 年内的一天(001-366) 15 %p 本地A.M.或P.M.的等价符 16 %U 一年中的星期数(00-53)星期天为星期的开始 17 %w 星期(0-6),星期天为星期的开始 18 %W 一年中的星期数(00-53)星期一为星期的开始 19 %x 本地相应的日期表示 20 %X 本地相应的时间表示 21 %Z 当前时区的名称 22 %% %号本身
备注:
“%p”只有与“%I”配合使用才有效果。
文档中强调确实是0 - 61,而不是59,闰年秒占两秒(汗一个)。
当使用strptime()函数时,只有当在这年中的周数和天数被确定的时候%U和%W才会被计算。
总结:
在Python中共有三种表达方式:1)timestamp 2)tuple或者struct_time 3)格式化字符串。它们之间的转化如图所示:
其他相关模块和函数
在Python中,其他处理日期和时间的模块还有: