time模块主要是围绕Unix Timestamp进行的。该模块主要包括一个类struct_time,另外几个其他函数及相关常量。需要注意的是该模块中的大多数函数是调用了所在平台C library的同名函数,所以要特别注意有些函数是与平台相关的,可能在不同的平台会有不同的效果。另外一点,该模块处理的日期处于1970-2038年之间,如果超过该范围,就要使用datetime了。 time模块重要的几种时间格式的关系如下图所示
下面详细介绍的方法及其使用
1.时间戳的相关处理
1.1 time.time()
返回当前时间的时间戳(1970纪元后经过的浮点秒数,float类型
import time
print(time.time())
result:
1636210569.3580875
1.2 time.asctime()
接受时间元组并返回一个可读的形式,具体形式为:星期几 月 日 时:分:秒 年,字符串类型
print(time.asctime((2019, 1, 1, 9, 23, 30, 1, 1, 0)))
result:
Tue Jan 1 09:23:30 2019
1.3 time.ctime()
把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式)。 如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于 asctime(localtime(secs)),字符串类型
默认情形
print(time.ctime(1))
result:
Thu Jan 1 08:00:01 1970
time.asctime()与time.ctime()虽然返回结果一样,但是入参不同。其中,time.asctime()的入参为时间元组的形式,time.ctime()的入参为数字类型。注意区分
1.4 time.localtime()
接收时间戳(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组, struct_time类型
print(time.localtime())
result:
time.struct_time(tm_year=2021, tm_mon=11, tm_mday=6, tm_hour=22, tm_min=59, tm_sec=22, tm_wday=5, tm_yday=310, tm_isdst=0)
struct_time总共包含9项,具体每一项的含义及取值如下:
| 字段 | 含义 | 取值 |
|---|---|---|
| tm_year | 年 | 4位数字 |
| tm_mon | 月 | 1-12 |
| tm_mday | 日 | 1-31 |
| tm_hour | 时 | 0-24 |
| tm_min | 分 | 0-59 |
| tm_sec | 秒 | 0-61(闰秒) |
| tm_wday | 周几 | 0-6(0代表周一) |
| tm_yday | 一年的第几天 | 1-366(儒略历) |
| tm_isdst | 夏令时 | 可取0或1,-1,1表示是夏令时, 0表示不是,-1(未知),默认 -1) |
1.5 time.gmtime()
接收时间戳(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组。与time.localtime()不同,这里的tm_isdst始终为0
print(time.gmtime())
result:
time.struct_time(tm_year=2021, tm_mon=11, tm_mday=6, tm_hour=15, tm_min=0, tm_sec=48, tm_wday=5, tm_yday=310, tm_isdst=0)
1.6 time.mktime()
将一个struct_time格式的时间转换为时间戳,与time.localtime()的作用恰好相反
print(time.mktime(time.localtime()))
result:
1636211017.0
2.时间格式化
2.1 time.strftime()
time.strftime(format[, t])
将一个struct_time格式的时间转换为格式化的时间字符串。t的默认值是time.localtime()
print(time.strftime("%Y-%m-%d", time.localtime()))
result:
2021-11-16
常用到的格式化符号如下:
| 符号 | 含义 | 符号 | 含义 |
|---|---|---|---|
| %c | 本地相应的日期和时间表示 | %x(小写) | 本地相应的日期 |
| %X(大写) | 本地相应的时间 | %y | 两位数的年份(去掉世纪) |
| %Y | 完整的年份 | %m | 月份(01-12) |
| %b | 简化版的英文单词月份,只取前三个字母 | %B | 完整版的英文单词月份 |
| %d | 一月中的第几天(01-31) | %j | 一年中的第几天(001-366) |
| %U | 一年中的第几周00-53),0是周日,第一周前的所有天数都在第0周 | %W(大写) | 和U基本相同,区别在于,0是周一 |
| %w(小写) | 周几(0-6,0是周日) | %A | 完整版的英文单词星期 |
| %a | 简化版的英文单词星期,只取前三个字母 | %H | 一天中的第几个小时,24小时制 |
| %I | 一天中的第几个小时,12小时制 | %p(小写) | 本地上午、下午的相应符,与%I连用 |
| %M | 分钟数(00-59) | %S(大写) | 秒数(0-61) |
| %Z | 时区的名字,不存在则为空字符 | %% | %字符 |
2.2 time.strptime()
与time.strftime()相反,将一个格式化的时间字符串转换为struct_time格式的时间
print(time.strptime(time.ctime()))
result:
time.struct_time(tm_year=2021, tm_mon=11, tm_mday=16, tm_hour=23, tm_min=22, tm_sec=58, tm_wday=1, tm_yday=320, tm_isdst=-1)
3.其他
3.1 time.sleep()
线程推迟指定的时间运行,单位为秒