python 模块 - time
1.1 time模块
用于获取,操作日期和时间。
1.2 时间戳
时间戳用于计算机内部时间值,用浮点数表示
import time
ticks = time.time()
print(f"当前时间戳为:{ticks}")
用time()获取时间戳
1.3 struct_time 时间结构体
为了更好地表示时间,time中封装了struct_time类,其成员包括
| 索引 | 属性 | 值 | 含义 |
|---|---|---|---|
| 0 | tm_year | 正整数 | 年 |
| 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 | 秒(有闰秒) |
| 6 | tm_wday | 0-6 | 星期,周一为0 |
| 7 | tm_yday | 1-366 | 一年中的第几天 |
| 8 | tm_isdst | 0,1或-1 | 是否为DST(夏令时) |
1.3.1 将时间戳转换为时间struct_time
| 函数 | 说明 |
|---|---|
| time.gmtime(secs) | UTC时间 |
| time.localtime(secs) | 本地时间 |
例:
>>> import time
>>> time.gmtime()
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=19, tm_hour=7, tm_min=32, tm_sec=35, tm_wday=0, tm_yday=353, tm_isdst=0)
>>> time.localtime(10)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=10, tm_wday=3, tm_yday=1, tm_isdst=0)
>>>
1.3.2 把struct_time转换为秒
# time.mktime(struct_time)
>>> import time
>>> obj = time.localtime()
>>> time.mktime(obj)
1671435622.0
1.4 时间戳或时间结构体转换为时间字符串
| 函数 | 说明 |
|---|---|
| time.ctime(secs) | 时间戳转换为UTC时间字符串 |
| time.asctime(struct_time) | 将时间结构体转化为本地时间字符串 |
注意:如果asctime()没有参数,则默认用time.localtime()创建时间结构体作为参数。
例:
>>> time.ctime()
'Mon Dec 19 15:39:00 2022'
>>> time.asctime(time.localtime())
'Mon Dec 19 15:39:09 2022'
1.5 时间格式化
- time.strftime(format,t) 把struct_time转换为自定义格式的字符串。
- time.strptime(time_str, format) 把时间字符串,转换为struct_time,是time.strftime的反函数。
可以将struct_time通过匹配符进行格式化输出,其转换格式为
| 名称 | 含意 | 名称 | 含意 |
|---|---|---|---|
| %a | 星期的缩写 | %A | 星期的名称 |
| %b | 月份缩写 | %B | 月份名称 |
| %c | 适当的日期和时间表示 | ||
| %d | 月中日,范围[01,31] | %j | 年中日,范围[001,366] |
| %H | 小时,范围[00,23] | %I | 小时,范围[01,12] |
| %M | 分钟,范围[00,59] | %S | 秒,范围[00,61] |
| %p | AM 或 PM | ||
| %m | 月份,范围[01,12] | ||
| %U | 年中周数,范围[00,53] 周日作为第一天 | %W | 同左,周一作为第一天 |
| %w | 周中日,范围[0(星期日),6] | ||
| %x | 适当的日期表示 | %X | 适当的时间表示 |
| %y | 无世纪年份,范围[00,99] | %Y | 带世纪的年份 |
| %z | 时区偏移 | ||
| %Z | 时区名称 | ||
| %% | 字面的 ‘%’ 字符。 |
如:
>>> t = time.localtime()
>>> time.strftime('%Y-%m-%d %H:%M:%S %A', t)
'2022-12-19 15:48:36 Monday'
>>> time.strftime('%X', t)
'15:48:36'
>>> time.strftime('%x', t)
'12/19/22'
反函数:
>>> cur = time.strftime('%Y-%m-%d %H:%M:%S %A', t)
>>> t = time.strptime(cur,'%Y-%m-%d %H:%M:%S %A')
>>> t
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=19, tm_hour=15, tm_min=48, tm_sec=36, tm_wday=0, tm_yday=353, tm_isdst=-1)
1.6 程序计时
| 函数 | 说明 |
|---|---|
| time.perf_counter() | 返回CPU级别的时间计数值,单位为秒。 |
| time.sleep(s) | 当前线程休眠s秒 |
import time
# 开始计时
start = time.perf_counter()
sum = 0
for i in range(1,10000000):
sum += i
# 结束计时
end = time.perf_counter()
# 计算运行了多长时间
print("seconds:{}".format(end - start))
# seconds:0.7894374999741558

浙公网安备 33010602011771号