time
本文是关于 Python 中 time 库的一些介绍说明。time 库是 Python 自带的一个常用的与时间有关的库。
1 | import time |
struct_time
一个带有 named tuple 接口的对象:可以通过索引和属性名访问值。 返回的时间值序列的类型为 gmtime() 、 localtime() 和 strptime() 。存在以下值:
索引 | 属性 | 值 |
---|---|---|
0 | tm_year |
(例如,1993) |
1 | tm_mon |
range [1, 12] |
2 | tm_mday |
range [1, 31] |
3 | tm_hour |
range [0, 23] |
4 | tm_min |
range [0, 59] |
5 | tm_sec |
range [0, 61] |
6 | tm_wday |
range [0, 6] ,周一为 0 |
7 | tm_yday |
range [1, 366] |
8 | tm_isdst |
0, 1 或 -1;如下所示 |
N/A | tm_zone |
时区名称的缩写 |
N/A | tm_gmtoff |
以秒为单位的UTC以东偏离 |
示例
1 | tim = time.localtime() |
格式转换
- struct_time -> str
- time.asctime([t]) :转换由
gmtime() 或 localtime()
所返回表示时间的元组或 struct_time 为以下形式的字符串:
'Sun Jun 20 23:21:05 1993'
。如果未提供 t ,则会使用 localtime() 所返回的当前时间。 - time.mktime(t) :这是 localtime() 的反函数。参数是 struct_time 或者完整的 9 元组(因为需要 dst 标志;如果它是未知的则使用 -1 作为dst标志),它表示 local 的时间,而不是 UTC 。返回一个浮点数
- time.strftime(format[, t]) :转换一个元组或 struct_time 表示的由 gmtime() 或 localtime() 返回的时间到由 format 参数指定的字符串。如果未提供 t ,则使用由 localtime() 返回的当前时间。
- time.asctime([t]) :转换由
gmtime() 或 localtime()
所返回表示时间的元组或 struct_time 为以下形式的字符串:
- Seconds -> str
- time.ctime([secs])
:转换以距离初始纪元的秒数表示的时间为以下形式的字符串:
'Sun Jun 20 23:21:05 1993'
代表本地时间。 日期字段的长度为两个字符,如果日期只有一个数字则会以零填充,例如:'Wed Jun 9 04:26:40 1993'
。如果 secs 未提供或为 None ,则使用 time() 所返回的当前时间。ctime(secs)
等价于asctime(localtime(secs))
。 - time.gmtime([secs]) :将以自 epoch 开始的秒数表示的时间转换为 UTC 的 struct_time ,如果未提供 secs 或为 None ,则使用 time() 所返回的当前时间。 一秒以内的小数将被忽略。
- time.ctime([secs])
:转换以距离初始纪元的秒数表示的时间为以下形式的字符串:
- str -> struct_time
- time.strptime(string[, format]) :根据格式解析表示时间的字符串。 返回值为一个被 gmtime() 或 localtime() 返回的 struct_time 。
格式化参数
指令 | 含意 |
---|---|
%a |
本地化的缩写星期中每日的名称。 |
%A |
本地化的星期中每日的完整名称。 |
%b |
本地化的月缩写名称。 |
%B |
本地化的月完整名称。 |
%c |
本地化的适当日期和时间表示。 |
%d |
十进制数 [01,31] 表示的月中日。 |
%H |
十进制数 [00,23] 表示的小时(24小时制)。 |
%I |
十进制数 [01,12] 表示的小时(12小时制)。 |
%j |
十进制数 [001,366] 表示的年中日。 |
%m |
十进制数 [01,12] 表示的月。 |
%M |
十进制数 [00,59] 表示的分钟。 |
%p |
本地化的 AM 或 PM 。当与
strptime() 函数一起使用时,如果使用 %I
指令来解析小时, %p 指令只影响输出小时字段。 |
%S |
十进制数 [00,61] 表示的秒。 |
%U |
十进制数 [00,53] 表示的一年中的周数(星期日作为一周的第一天)。 在第一个星期日之前的新年中的所有日子都被认为是在第 0 周。 |
%w |
十进制数 [0(星期日),6] 表示的周中日。 |
%W |
十进制数 [00,53] 表示的一年中的周数(星期一作为一周的第一天)。 在第一个星期一之前的新年中的所有日子被认为是在第 0 周。 |
%x |
本地化的适当日期表示。 |
%X |
本地化的适当时间表示。 |
%y |
十进制数 [00,99] 表示的没有世纪的年份。 |
%Y |
十进制数表示的带世纪的年份。 |
%% |
字面的 '%' 字符。 |
备注:当与 strptime() 函数一起使用时,
%U
和 %W
仅用于指定星期几和年份的计算。
示例:
1 | strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()) |
获取时间
- time.localtime([secs]) :与 gmtime() 相似但转换为当地时间。如果未提供 secs 或为 None ,则使用由 time() 返回的当前时间。
- time.time() → float
:返回以浮点数表示的从 epoch
开始的秒数的时间值。
- epoch 的具体日期和 leap seconds 的处理取决于平台。
- 在 Windows 和大多数 Unix 系统中, epoch 是 1970 年 1 月 1 日 00:00:00 (UTC),并且闰秒将不计入从 epoch 开始的秒数。 这通常被称为 Unix 时间。
- 要了解给定平台上 epoch 的具体定义,请查看 gmtime(0)。
- 返回的数字可以通过将其传递给 gmtime() 函数或转换为UTC中更常见的时间格式(即年、月、日、小时等)或通过将它传递给 localtime() 函数获得本地时间。在这两种情况下都返回一个 struct_time 对象,日历日期组件可以从中作为属性访问。
- time.time_ns() → int :与 time() 相似,但返回时间为用整数表示的自 epoch 以来所经过的纳秒数。
计时器
- time.monotonic() → float :(以小数表示的秒为单位)返回一个单调时钟的值,即不能倒退的时钟。 该时钟不受系统时钟更新的影响。 返回值的参考点未被定义,因此只有两次调用之间的差值才是有效的。
- time.monotonic_ns() → int :与 monotonic() 相似,但是返回时间为纳秒数。
- time.perf_counter() → float :(以小数表示的秒为单位)返回一个性能计数器的值,即用于测量较短持续时间的具有最高有效精度的时钟。 它会包括睡眠状态所消耗的时间并且作用于全系统范围。 返回值的参考点未被定义,因此只有两次调用之间的差值才是有效的。
- time.perf_counter_ns() → int :与 perf_counter() 相似,但是返回时间为纳秒。
- time.process_time() → float :(以小数表示的秒为单位)返回当前进程的系统和用户 CPU 时间的总计值。 它不包括睡眠状态所消耗的时间。 根据定义它只作用于进程范围。 返回值的参考点未被定义,因此只有两次调用之间的差值才是有效的。
- time.process_time_ns() → int :与 process_time() 相似,但是返回时间为纳秒。
- time.process_time() → float :(以小数表示的秒为单位)返回当前进程的系统和用户 CPU 时间的总计值。 它不包括睡眠状态所消耗的时间。 根据定义它只作用于进程范围。 返回值的参考点未被定义,因此只有两次调用之间的差值才是有效的。
- time.process_time_ns() → int :与 process_time() 相似,但是返回时间为纳秒。
- time.thread_time() → float :(以小数表示的秒为单位)返回当前线程的系统和用户 CPU 时间的总计值。 它不包括睡眠状态所消耗的时间。 根据定义它只作用于线程范围。 返回值的参考点未被定义,因此只有两次调用之间的差值才是有效的。
- time.thread_time_ns() → int :与 thread_time() 相似,但返回纳秒时间。
函数
- time.sleep(secs) :调用该方法的线程将被暂停执行 secs 秒。参数可以是浮点数,以表示更为精确的睡眠时长。