在 Python 文档里,time 是归类在Generic Operating System Services中,换句话说, 它提供的功能是更加接近于操作系统层面的。通读文档可知,time 模块是围绕着 Unix Timestamp 进行的。
该模块主要包括一个类 struct_time,另外其他几个函数及相关常量。 需要注意的是在该模块中的大多数函数是调用了所在平台C library的同名函数, 所以要特别注意有些函数是平台相关的,可能会在不同的平台有不同的效果。另外一点是,由于是基于Unix Timestamp,所以其所能表述的日期范围被限定在 1970 – 2038 之间,如果你写的代码需要处理在前面所述范围之外的日期,那可能需要考虑使用datetime模块更好。
函数 | 说明 |
---|---|
time.time() | 返回时间戳格式的时间 (相对于1970.1.1 00:00:00以秒计算的偏移量) |
time.ctime() | 返回字符串形式的时间,可以传入时间戳格式时间,用来做转化 |
time.asctime() | 返回字符串形式的时间,可以传入struct_time形式时间,用来做转化 |
time.localtime() | 返回当前时间的struct_time形式,可传入时间戳格式时间,用来做转化 |
time.gmtime() | 返回当前时间的struct_time形式,UTC时区(0时区) ,可传入时间戳格式时间,用来做转化 |
时间格式化 | |
time.mktime() | 将一个以struct_time格式转换为时间戳 |
time.strftime(format[,t]) | 把一个struct_time时间转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出 |
time.strptime(string[,format]) | 把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。 |
计时器功能 | |
time.sleep(secs) | 线程推迟指定的时间运行。单位为秒。 |
time.clock() | 这个需要注意,在不同的系统上含义不同。在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间 |
其它内置函数 | |
altzone() | 返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用 |
tzset() | 根据环境变量TZ重新初始化时间相关设置 |
timezone | 是当地时区(未启动夏令时)距离格林威治的偏移秒数(>0,美洲;<=0大部分欧洲,亚洲,非洲) |
tzname | 包含一对根据情况的不同而不同的字符串,分别是带夏令时的本地时区名称,和不带的 |
In [1]: import time
In [2]: time.time()
Out[2]: 1526196952.434
In [3]: time.ctime()
Out[3]: 'Sun May 13 15:36:09 2018'
In [4]: time.asctime()
Out[4]: 'Sun May 13 15:36:28 2018'
In [5]: time.localtime()
Out[5]: time.struct_time(tm_year=2018, tm_mon=5, tm_mday=13, tm_hour=15, tm_min=36, tm_sec=49, tm_wday=6, tm_yday=133, tm_isdst=0)
# struct_time共有9个元素,其中前面6个为年月日时分秒,后面三个分别代表的含义为:
# tm_wday 一周的第几天(周日是0)
# tm_yday 一年的第几天
# tm_isdst 是否是夏令时
In [6]: time.gmtime()
Out[6]: time.struct_time(tm_year=2018, tm_mon=5, tm_mday=13, tm_hour=7, tm_min=37, tm_sec=3, tm_wday=6, tm_yday=133, tm_isdst=0)
In [7]: time.mktime(time.localtime())
Out[7]: 1526197173.0
In [8]: time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
Out[8]: '2018-05-13 15:54:35'
In [9]: time.strptime(time.ctime())
Out[9]: time.struct_time(tm_year=2018, tm_mon=5, tm_mday=13, tm_hour=15, tm_min=56, tm_sec=36, tm_wday=6, tm_yday=133, tm_isdst=-1)
In [10]: time.timezone
Out[10]: -28800
In [12]: time.tzname
Out[12]:
('\xd6\xd0\xb9\xfa\xb1\xea\xd7\xbc\xca\xb1\xbc\xe4',
'\xd6\xd0\xb9\xfa\xcf\xc4\xc1\xee\xca\xb1')
In [13]: time.tzname[0].decode("GBK")
Out[13]: u'\u4e2d\u56fd\u6807\u51c6\u65f6\u95f4'
In [14]: print time.tzname[0].decode("GBK")
中国标准时间
In [15]: print time.tzname[1].decode("GBK")
中国夏令时
time.strftime(format[,t]) 时间字符串格式化参数列表
参数 | 说明 |
---|---|
%c | 本地相应的日期和时间表示 |
%x | 本地相应日期 |
%X | 本地相应时间 |
%y | 去掉世纪的年份(00 – 99) |
%Y | 完整的年份 |
%m | 月份(01 – 12) |
%b | 本地简化月份名称 |
%B | 本地完整月份名称 |
%d | 一个月中的第几天(01 – 31) |
%j | 一年中的第几天(001 – 366) |
%U | 一年中的星期数。(00 – 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周 |
%W | 和%U基本相同,不同的是%W以星期一为一个星期的开始 |
%w | 一个星期中的第几天(0 – 6,0是星期天) |
%a | 本地(locale)简化星期名称 |
%A | 本地完整星期名称 |
%H | 一天中的第几个小时(24小时制,00 – 23) |
%I | 第几个小时(12小时制,01 – 12) |
%p | 本地am或者pm的相应符,“%p”只有与“%I”配合使用才有效果 |
%M | 分钟数(00 – 59) |
%S | 秒(01 – 61),文档中强调确实是0 – 61,而不是59,闰年秒占两秒 |
%Z | 时区的名字(如果不存在为空字符) |
%% | ‘%’字符 |