该模块提供了各种时间相关的函数。相关功能还可以参阅datetime和calendar模块。
尽管此模块始终可用,但并非所有平台上都提供所有功能。此模块中定义的大多数函数是调用了所在平台C语言库的同名函数。因为这些函数的语义因平台而异,所以使用时最好查阅平台相关文档。
官方中文文档链接:https://docs.python.org/zh-cn/3.7/library/time.html
返回值:返回以浮点数表示的从 epoch 开始的秒数的时间值(Windows 的epoch 具体日期为1970年1月1日 00:00:00)
示例:
import time
print(time.time())
输出:
1703345916.6938446
功能:暂停执行调用线程达到给定的秒数。
参数:可以是浮点数,以指示更精确的睡眠时间。
实际的暂停时间可能小于请求的时间,因为任何捕获的信号将在执行该信号的捕获例程后终止 sleep() 。此外,由于系统中其他活动的安排,暂停时间可能比请求的时间长任意量。
功能:用于将时间元组(或 struct_time 对象,如由localtime()或gmtime()返回的时间)格式化为由 format 参数指定格式的字符串。
参数:
format:一个字符串,指定了输出的格式。这个字符串可以包含一系列的指令,这些指令将被替换为相应的时间部分。
t(可选):一个时间元组或 struct_time 对象。如果未提供,则使用当前时间。
以下指令可以嵌入 format 字符串中。它们显示时没有可选的字段宽度和精度规范,并被 strftime() 结果中的指示字符替换:
指令含义注释
%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 。 (1)
%S 十进制数 [00,61] 表示的秒。 (2)
%U 十进制数 [00,53] 表示的一年中的周数(星期日作为一周的第一天)。 在第一个星期日之前的新年中的所有日子都被认为是在第 0 周。 (3)
%w 十进制数 [0(星期日),6] 表示的周中日。
%W 十进制数 [00,53] 表示的一年中的周数(星期一作为一周的第一天)。 在第一个星期一之前的新年中的所有日子被认为是在第 0 周。 (3)
%x 本地化的适当日期表示。
%X 本地化的适当时间表示。
%y 十进制数 [00,99] 表示的没有世纪的年份。
%Y 十进制数表示的带世纪的年份。
%z 时区偏移以格式 +HHMM 或 -HHMM 形式的 UTC/GMT 的正或负时差指示,其中H表示十进制小时数字,M表示小数分钟数字 [-23:59, +23:59] 。
%Z 时区名称(如果不存在时区,则不包含字符)。
%% 字面的 '%' 字符。
示例:
import time
print(time.strftime("%Y-%m-%d %H:%M:%S"))
输出:2023-12-23 23:17:33
根据格式解析表示时间的字符串。 返回值为一个被 gmtime() 或 localtime() 返回的 struct_time 。
format 参数使用与 strftime() 相同的指令。
例如:
>>> import time
>>> time.strptime("30 Nov 00", "%d %b %y")
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)
返回的时间值序列的类型为 gmtime() 、 localtime() 和 strptime() 。它是一个带有 named tuple 接口的对象:可以通过索引和属性名访问值。 存在以下值:
索引属性值
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]; 见 strftime() 介绍中的 (2)
6 tm_wday range [0, 6] ,周一为 0
7 tm_yday range [1, 366]
8 tm_isdst 0, 1 或 -1;
是Python的 time 模块中的一个函数,用于将一个时间(以秒为单位)转换为一个本地时间的元组。
参数:secs(可选):自1970年1月1日以来的秒数。如果未提供此参数,则返回当前本地时间。
返回值:返回一个包含以下9个元素的元组:年 (tm_year)
月 (tm_mon)
日 (tm_mday)
小时 (tm_hour)
分钟 (tm_min)
秒 (tm_sec)
星期几 (tm_wday)(星期天为0,星期一为1,以此类推)
一年中的第几天 (tm_yday)
是否在实行夏令时 (tm_isdst)(0表示未实行,1表示实行,-1表示信息未知)
示例:
import time
print(time.localtime())
print(str(time.localtime()[0:1]).replace(',','')) # 获取当前年份
print(str(time.localtime()[1:2]).replace(',','')) # 获取当前月份
输出:
time.struct_time(tm_year=2023, tm_mon=12, tm_mday=23, tm_hour=23, tm_min=41, tm_sec=39, tm_wday=5, tm_yday=357, tm_isdst=0)
(2023)
(12)
参数:这是 localtime() 的反函数。它的参数是 struct_time 或者完整的 9 元组(因为需要 dst 标志;如果它是未知的则使用 -1 作为dst标志),它表示 local 的时间,而不是 UTC 。
返回值:它返回一个浮点数,以便与 time() 兼容。如果输入值不能表示为有效时间,则 OverflowError 或 ValueError 将被引发(这取决于Python或底层C库是否捕获到无效值)。它可以生成时间的最早日期取决于平台。
示例:
import time
# 创建一个时间元组,表示2023年7月5日12:34:56的UTC时间
t = (2023, 7, 5, 12, 34, 56, 0, 0, 0)
# 使用mktime函数将时间元组转换为自纪元以来的秒数
seconds = time.mktime(t)
print(seconds) # 输出:1688531696.0
在Python的time模块中,time.asctime([t])是一个非常有用的函数,用于将一个时间元组(或者给定的可选参数t)转换为一个字符串,该字符串表示了人类可读的日期和时间。
参数
t(可选):一个时间元组,例如 (tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst)。
返回值:返回一个字符串,格式为 "Wed Jun 30 21:49:08 1994\n"。
例子:
import time
# 使用当前时间
now = time.time() # 获取当前时间戳,单位秒,如 1703336454.0427244
print(time.asctime(time.localtime(now)))
# 使用特定的时间元组
tm = time.struct_time((2023, 6, 30, 21, 49, 8, 2, 183, -1))
print(time.asctime(tm))
输出:
Wed Jun 30 21:49:08 2023
Wed Jun 30 21:49:08 2023
注意:返回的字符串是按照当前区域设置的默认时区来格式化的。如果你想要按照特定的时区来格式化时间,你可能需要使用其他库,如pytz或dateutil.tz。
time.struct_time((2023, 6, 30, 21, 49, 8, 2, 183, -1)) 其中每个数字的含义
time.struct_time 是一个Python中的时间元组,用于表示一个特定的时间点。这个元组通常包含9个元素,分别代表:
年(tm_year)
月(tm_mon)
日(tm_mday)
小时(tm_hour)
分钟(tm_min)
秒(tm_sec)
星期几(tm_wday) - 星期天为0,星期一为1,以此类推
一年中的第几天(tm_yday) - 1月1日为1,12月31日为365(或366在闰年)
是否在实行夏令时(tm_isdst) - 0表示未实行,1表示实行,-1表示信息未知。
Python3.8及以后被弃用
time.perf_counter() 是 Python 的 time 模块中的一个函数,用于获取高精度的时间计数。它返回的是自系统启动以来经过的时钟周期数,通常以 float 类型表示。
示例:
import time start = time.perf_counter()
# 这里放置你要计时的代码
end = time.perf_counter()
print(f"The code took {end - start} seconds to execute.")
如果你只需要一般精度的计时,可以使用 time.time()
返回指定的 thread_id 的特定于线程的CPU时间时钟的 clk_id 。
返回指定时钟 clk_id 的分辨率(精度)。
返回指定 clk_id 时钟的时间。
与 clock_gettime() 相似,但返回时间为纳秒。
设置指定 clk_id 时钟的时间。 目前, CLOCK_REALTIME 是 clk_id 唯一可接受的值。
与 clock_settime() 相似,但设置时间为纳秒。
将以自 epoch 开始的秒数表示的时间转换为表示本地时间的字符串。 如果未提供 secs 或为 None,则使用 time() 所返回的当前时间。 ctime(secs) 相当于 asctime(localtime(secs))。 区域信息不会被 ctime() 使用。
获取有关指定时钟的信息作为命名空间对象。
将以自 epoch 开始的秒数表示的时间转换为 UTC 的 struct_time ,其中 dst 标志始终为零。 如果未提供 secs 或为 None ,则使用 time() 所返回的当前时间。 一秒以内的小数将被忽略。 有关 struct_time 对象的说明请参见上文。 有关此函数的逆操作请参阅 calendar.timegm()。
返回单调时钟的值(以小数秒为单位),即不能倒退的时钟。时钟不受系统时钟更新的影响。返回值的参考点未定义,因此只有连续调用结果之间的差异才有效。
3.3 新版功能.
在 3.5 版更改: 该功能现在始终可用且始终在系统范围内。
与 monotonic() 相似,但是返回时间为纳秒数。
返回性能计数器的值(以小数秒为单位),即具有最高可用分辨率的时钟,以测量短持续时间。它确实包括睡眠期间经过的时间,并且是系统范围的。返回值的参考点未定义,因此只有连续调用结果之间的差异才有效。
与 perf_counter() 相似,但是返回时间为纳秒。
用于测量CPU时间,即处理器时间。它返回的是自 time.process_time() 被调用以来经过的处理器时钟周期数。
示例:
import time start = time.process_time()
# 这里放置你要计时的代码
end = time.process_time()
print(f"The code took {end - start} seconds to execute.")
与 process_time() 相似,但是返回时间为纳秒。
返回当前线程的系统和用户CPU时间之和的值(以小数秒为单位)。它不包括睡眠期间经过的时间。根据定义,它是特定于线程的。返回值的参考点未定义,因此只有同一线程中连续调用结果之间的差异才有效。
可用性 : Windows、 Linux、 Unix 系统支持 CLOCK_THREAD_CPUTIME_ID 。
与 thread_time() 相似,但返回纳秒时间。
与 time() 相似,但返回时间为用整数表示的自 epoch 以来所经过的纳秒数。
本地DST时区的偏移量,以UTC为单位的秒数,如果已定义。如果当地DST时区在UTC以东(如在西欧,包括英国),则是负数。 只有当 daylight 非零时才使用它。 见下面的注释。
如果定义了DST时区,则为非零。 见下面的注释。
本地(非DST)时区的偏移量,UTC以西的秒数(西欧大部分地区为负,美国为正,英国为零)。 见下面的注释。
两个字符串的元组:第一个是本地非DST时区的名称,第二个是本地DST时区的名称。 如果未定义DST时区,则不应使用第二个字符串。 见下面的注释。
示例:
import time
print(time.tzname)
输出:
('中国标准时间', '中国夏令时')
下面是一些术语和惯例的解释
from time import strptime;
#定义一个时间字符串;
date_string = "2023-12-23 22:39:00";
date_tuple = strptime(date_string, "%Y-%m-%d %H:%M:%S") # 输出:(2023, 12, 22, 22,39,00)
从 |
到 |
使用 |
seconds since the epoch |
UTC 的 struct_time |
gmtime() |
seconds since the epoch |
本地时间的 struct_time |
localtime() |
UTC 的 struct_time |
seconds since the epoch |
calendar.timegm() |
本地时间的 struct_time |
seconds since the epoch |
mktime() |