time.
asctime
([t])
转换由 gmtime() 或 localtime() 所返回的表示时间的元组或 struct_time 为以下形式的字符串: 'Sun Jun 20 23:21:05 1993'
。
如果未提供 t,则会使用 localtime() 所返回的当前时间。 asctime() 不会使用区域设置信息。
import time
print(time.asctime())
# output: Fri Apr 8 11:04:28 2022
time.
ctime
([secs])
转换以距离初始纪元的秒数表示的时间为以下形式的字符串: 'Sun Jun 20 23:21:05 1993'
代表本地时间。
如果 secs 未提供或为 None,则使用 time() 所返回的当前时间。 ctime(secs)
等价于 asctime(localtime(secs))
。 ctime() 不会使用区域设置信息。
import time
print(time.ctime(0))
# output: Thu Jan 1 08:00:00 1970
print(time.ctime(3600))
# output: Thu Jan 1 09:00:00 1970
time.
get_clock_info
(name)
获取有关指定时钟的信息作为命名空间对象。 支持的时钟名称和读取其值的相应函数是:
-
'monotonic'
: time.monotonic() -
'perf_counter'
: time.perf_counter() -
'process_time'
: time.process_time() -
'thread_time'
: time.thread_time() -
'time'
: time.time()
结果具有以下属性:
-
adjustable : 如果时钟可以自动更改(例如通过NTP守护程序)或由系统管理员手动更改,则为
True
,否则为False
。 -
implementation : 用于获取时钟值的基础C函数的名称。有关可能的值,请参阅 Clock ID 常量 。
-
monotonic :如果时钟不能倒退,则为
True
,否则为False
。 -
resolution : 以秒为单位的时钟分辨率( float )
import time
print(time.get_clock_info('time'))
# output: namespace(implementation='GetSystemTimeAsFileTime()', monotonic=False, adjustable=True, resolution=0.015625)
print(time.get_clock_info('process_time'))
# output: namespace(implementation='GetProcessTimes()', monotonic=True, adjustable=False, resolution=1e-07)
time.
gmtime
([secs])
将以自 epoch 开始的秒数表示的时间转换为 UTC 的 struct_time ,其中 dst 标志始终为零。 如果未提供 secs 或为 None ,则使用 time() 所返回的当前时间。
import time
print(time.gmtime(3600))
# output: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=1, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
time.
localtime
([secs])
与 gmtime() 相似但转换为当地时间。如果未提供 secs 或为 None ,则使用由 time() 返回的当前时间。当 DST 适用于给定时间时,dst标志设置为 1
。
import time
print(time.localtime())
# output: time.struct_time(tm_year=2022, tm_mon=4, tm_mday=8, tm_hour=11, tm_min=21, tm_sec=56, tm_wday=4, tm_yday=98, tm_isdst=0)
import time
print(time.localtime(3600))
# output: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=9, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
time.
mktime
(t)
这是 localtime() 的反函数。它的参数是 struct_time 或者完整的 9 元组(因为需要 dst 标志;如果它是未知的则使用 -1
作为dst标志),它表示 local 的时间,而不是 UTC 。它返回一个浮点数,以便与 time() 兼容。如果输入值不能表示为有效时间,则 OverflowError 或 ValueError 将被引发(这取决于Python或底层C库是否捕获到无效值)。
import time
today =(2022, 4, 8, 11, 21, 56, 4,98, 0)
print(time.mktime(today))
# output: 1649388116.0
time.
monotonic
() → float
(以小数表示的秒为单位)返回一个单调时钟的值,即不能倒退的时钟。
该时钟不受系统时钟更新的影响。 返回值的参考点未被定义,因此只有两次调用之间的差值才是有效的。使用 monotonic_ns() 以避免 float 类型导致的精度损失。
import time
print(time.monotonic())
# output: 273953.093
i = 2 ** 25
while i:
i -= 1
print(time.monotonic())
# output: 273954.703
time.
monotonic_ns
() → int
与 monotonic() 相似,但是返回时间为纳秒数。
import time
print(time.monotonic_ns())
# output: 274320562000000
i = 2 ** 25
while i:
i -= 1
print(time.monotonic_ns())
# output: 274322953000000
time.
perf_counter
() → float
(以小数表示的秒为单位)返回一个性能计数器的值,即用于测量较短持续时间的具有最高有效精度的时钟。 它会包括睡眠状态所消耗的时间并且作用于全系统范围。 返回值的参考点未被定义,因此只有两次调用之间的差值才是有效的。
与 perf_counter() 相似,但是返回时间为纳秒
time.
process_time
() → float
(以小数表示的秒为单位)返回当前进程的系统和用户 CPU 时间的总计值。 它不包括睡眠状态所消耗的时间。 根据定义它只作用于进程范围。 返回值的参考点未被定义,因此只有两次调用之间的差值才是有效的。
time.
process_time_ns
() → int
与 process_time() 相似,但是返回时间为纳秒。
time.
sleep
(secs)
调用该方法的线程将被暂停执行 secs 秒。参数可以是浮点数,以表示更为精确的睡眠时长。
import time
print('monotonic:')
print(time.monotonic())
# output: 275001.468
time.sleep(10)
print(time.monotonic())
# output: 275011.468
# 275011.468-275001.468 ≈ 10
print('perf_counter:')
print(time.perf_counter())
# output: 275012.6650191
time.sleep(10)
print(time.perf_counter())
# output: 275022.6786857
# 275022.6786857-275012.6650191 ≈ 10
print('process_time:')
print(time.process_time())
# output: 0.03125
time.sleep(10)
print(time.process_time())
# output: 0.03125
# 0.03125-0.03125 ≈ 0
time.
strftime
(format[, t])
转换一个元组或 struct_time 表示的由 gmtime() 或 localtime() 返回的时间到由 format 参数指定的字符串。如果未提供 t ,则使用由 localtime() 返回的当前时间。 format 必须是一个字符串。如果 t 中的任何字段超出允许范围,则引发 ValueError 。
以下指令可以嵌入 format 字符串中。它们显示时没有可选的字段宽度和精度规范,并被 strftime() 结果中的指示字符替换:
指令 | 含意 | 备注 |
---|---|---|
| 本地化的缩写星期中每日的名称。 | |
| 本地化的星期中每日的完整名称。 | |
| 本地化的月缩写名称。 | |
| 本地化的月完整名称。 | |
| 本地化的适当日期和时间表示。 | |
| 十进制数 [01,31] 表示的月中日。 | |
| 十进制数 [00,23] 表示的小时(24小时制)。 | |
| 十进制数 [01,12] 表示的小时(12小时制)。 | |
| 十进制数 [001,366] 表示的年中日。 | |
| 十进制数 [01,12] 表示的月。 | |
| 十进制数 [00,59] 表示的分钟。 | |
| 本地化的 AM 或 PM 。 | (1) |
| 十进制数 [00,61] 表示的秒。 | (2) |
| 十进制数 [00,53] 表示的一年中的周数(星期日作为一周的第一天)。 在第一个星期日之前的新年中的所有日子都被认为是在第 0 周。 | (3) |
| 十进制数 [0(星期日),6] 表示的周中日。 | |
| 十进制数 [00,53] 表示的一年中的周数(星期一作为一周的第一天)。 在第一个星期一之前的新年中的所有日子被认为是在第 0 周。 | (3) |
| 本地化的适当日期表示。 | |
| 本地化的适当时间表示。 | |
| 十进制数 [00,99] 表示的没有世纪的年份。 | |
| 十进制数表示的带世纪的年份。 | |
| Time zone offset indicating a positive or negative time difference from UTC/GMT of the form +HHMM or -HHMM, where H represents decimal hour digits and M represents decimal minute digits [-23:59, +23:59]. 1 | |
| Time zone name (no characters if no time zone exists). Deprecated. 1 | |
| 字面的 |
注释:
-
当与 strptime() 函数一起使用时,如果使用
%I
指令来解析小时,%p
指令只影响输出小时字段。 -
范围真的是
0
到61
;值60
在表示 leap seconds 的时间戳中有效,并且由于历史原因支持值61
。 -
当与 strptime() 函数一起使用时,
%U
和%W
仅用于指定星期几和年份的计算。
import time
print(time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()))
# output: Fri, 08 Apr 2022 04:35:49 +0000
time.
strptime
(string[, format])
根据格式解析表示时间的字符串。 返回值为一个被 gmtime() 或 localtime() 返回的 struct_time 。
format 参数使用与 strftime() 相同的指令。 它默认为匹配 ctime() 所返回的格式 "%a %b %d %H:%M:%S %Y"`
。 如果 string 不能根据 format 来解析,或者解析后它有多余的数据,则会引发 ValueError。
import time
print(time.strptime("30 Nov 00", "%d %b %y") )
# output: time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
class time.
struct_time
返回的时间值序列的类型为 gmtime() 、 localtime() 和 strptime() 。它是一个带有 named tuple 接口的对象:可以通过索引和属性名访问值。 存在以下值:
索引 | 属性 | 值 |
---|---|---|
0 |
| (例如,1993) |
1 |
| range [1, 12] |
2 |
| range [1, 31] |
3 |
| range [0, 23] |
4 |
| range [0, 59] |
5 |
| range [0, 61]; 见 strftime() 介绍中的 (2) |
6 |
| range [0, 6] ,周一为 0 |
7 |
| range [1, 366] |
8 |
| 0, 1 或 -1;如下所示 |
N/A |
| 时区名称的缩写 |
N/A |
| 以秒为单位的UTC以东偏离 |
time.
time
() → float
返回以浮点数表示的从 epoch 开始的秒数的时间值。
time.
time_ns
() → int
与 time() 相似,但返回时间为用整数表示的自 epoch 以来所经过的纳秒数。
import time
print(time.time() )
# output: 1649392679.9409678
time.
thread_time
() → float
(以小数表示的秒为单位)返回当前线程的系统和用户 CPU 时间的总计值。 它不包括睡眠状态所消耗的时间。 根据定义它只作用于线程范围。 返回值的参考点未被定义,因此只有两次调用之间的差值才是有效的。
time.
thread_time_ns
() → int
与 thread_time() 相似,但返回纳秒时间。
import time
print('thread_time:')
print(time.thread_time())
# output: 0.03125
i = 2 ** 25
while i:
i -= 1
print(time.thread_time())
# output: 1.65625
time.sleep(10)
print(time.thread_time())
# output: 1.65625
时区常量
time.
altzone
本地DST时区的偏移量,以UTC为单位的秒数,如果已定义。如果当地DST时区在UTC以东(如在西欧,包括英国),则是负数。 只有当 daylight
非零时才使用它。 见下面的注释。
time.
daylight
如果定义了DST时区,则为非零。 见下面的注释。
time.
timezone
本地(非DST)时区的偏移量,UTC以西的秒数(西欧大部分地区为负,美国为正,英国为零)。 见下面的注释。
time.
tzname
两个字符串的元组:第一个是本地非DST时区的名称,第二个是本地DST时区的名称。 如果未定义DST时区,则不应使用第二个字符串。 见下面的注释。
注解
对于上述时区常量( altzone 、 daylight 、 timezone 和 tzname ),该值由模块加载时有效的时区规则确定,或者最后一次 tzset() 被调用时,并且在过去的时间可能不正确。建议使用来自 localtime() 结果的 tm_gmtoff
和 tm_zone
来获取时区信息。