Python标准库time方法及参数详解

time库

该模块提供了各种时间相关的函数。相关功能还可以参阅datetime和calendar模块。

尽管此模块始终可用,但并非所有平台上都提供所有功能。此模块中定义的大多数函数是调用了所在平台C语言库的同名函数。因为这些函数的语义因平台而异,所以使用时最好查阅平台相关文档。

官方中文文档链接:https://docs.python.org/zh-cn/3.7/library/time.html

time——时间的访问和转换

常用方法

1、time.time() → float

返回值:返回以浮点数表示的从 epoch 开始的秒数的时间值(Windows 的epoch 具体日期为1970年1月1日 00:00:00)

示例:

import time

print(time.time())

输出:

1703345916.6938446

2、time.sleep(secs)

功能:暂停执行调用线程达到给定的秒数。

参数:可以是浮点数,以指示更精确的睡眠时间。

        实际的暂停时间可能小于请求的时间,因为任何捕获的信号将在执行该信号的捕获例程后终止 sleep() 。此外,由于系统中其他活动的安排,暂停时间可能比请求的时间长任意量。

3、time.strftime(format[, t])

功能:用于将时间元组(或 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

4、time.strptime(string[, format])

根据格式解析表示时间的字符串。 返回值为一个被 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)

5、time.struct_time

返回的时间值序列的类型为 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;

6、time.localtime([secs]) 

是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)

7、time.mktime(t)

参数:这是 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

不常用方法

1、time.asctime([t])

在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表示信息未知。

2、time.clock()

Python3.8及以后被弃用

3、time.perf_counter()

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()

4、time.pthread_getcpuclockid(thread_id)

返回指定的 thread_id 的特定于线程的CPU时间时钟的 clk_id 。

5、time.clock_getres(clk_id)

返回指定时钟 clk_id 的分辨率(精度)。

6、time.clock_gettime(clk_id) → float

返回指定 clk_id 时钟的时间。

7、time.clock_gettime_ns(clk_id) → int

与 clock_gettime() 相似,但返回时间为纳秒。

8、time.clock_settime(clk_id, time: float)

设置指定 clk_id 时钟的时间。 目前, CLOCK_REALTIME 是 clk_id 唯一可接受的值。

9、time.clock_settime_ns(clk_id, time: int)

与 clock_settime() 相似,但设置时间为纳秒。

10、time.ctime([secs])

将以自 epoch 开始的秒数表示的时间转换为表示本地时间的字符串。 如果未提供 secs 或为 None,则使用 time() 所返回的当前时间。 ctime(secs) 相当于 asctime(localtime(secs))。 区域信息不会被 ctime() 使用。

11、time.get_clock_info(name)

获取有关指定时钟的信息作为命名空间对象。

12、time.gmtime([secs])

将以自 epoch 开始的秒数表示的时间转换为 UTC 的 struct_time ,其中 dst 标志始终为零。 如果未提供 secs 或为 None ,则使用 time() 所返回的当前时间。 一秒以内的小数将被忽略。 有关 struct_time 对象的说明请参见上文。 有关此函数的逆操作请参阅 calendar.timegm()。

13、time.monotonic() → float

返回单调时钟的值(以小数秒为单位),即不能倒退的时钟。时钟不受系统时钟更新的影响。返回值的参考点未定义,因此只有连续调用结果之间的差异才有效。

3.3 新版功能.

在 3.5 版更改: 该功能现在始终可用且始终在系统范围内。

14、time.monotonic_ns() → int

与 monotonic() 相似,但是返回时间为纳秒数。

15、time.perf_counter() → float

返回性能计数器的值(以小数秒为单位),即具有最高可用分辨率的时钟,以测量短持续时间。它确实包括睡眠期间经过的时间,并且是系统范围的。返回值的参考点未定义,因此只有连续调用结果之间的差异才有效。

16、time.perf_counter_ns() → int

与 perf_counter() 相似,但是返回时间为纳秒。

17、time.process_time() 

用于测量CPU时间,即处理器时间。它返回的是自 time.process_time() 被调用以来经过的处理器时钟周期数。

示例:

import time start = time.process_time()

# 这里放置你要计时的代码

end = time.process_time()

print(f"The code took {end - start} seconds to execute.")

18、time.process_time_ns() → int

与 process_time() 相似,但是返回时间为纳秒。

19、time.thread_time() → float

返回当前线程的系统和用户CPU时间之和的值(以小数秒为单位)。它不包括睡眠期间经过的时间。根据定义,它是特定于线程的。返回值的参考点未定义,因此只有同一线程中连续调用结果之间的差异才有效。

可用性 : Windows、 Linux、 Unix 系统支持 CLOCK_THREAD_CPUTIME_ID 。

20、time.thread_time_ns() → int

与 thread_time() 相似,但返回纳秒时间。

21、time.time_ns() → int

与 time() 相似,但返回时间为用整数表示的自 epoch 以来所经过的纳秒数。

时区常量

1、time.altzone

本地DST时区的偏移量,以UTC为单位的秒数,如果已定义。如果当地DST时区在UTC以东(如在西欧,包括英国),则是负数。 只有当 daylight 非零时才使用它。 见下面的注释。

2、time.daylight

如果定义了DST时区,则为非零。 见下面的注释。

3、time.timezone

本地(非DST)时区的偏移量,UTC以西的秒数(西欧大部分地区为负,美国为正,英国为零)。 见下面的注释。

4、time.tzname

两个字符串的元组:第一个是本地非DST时区的名称,第二个是本地DST时区的名称。 如果未定义DST时区,则不应使用第二个字符串。 见下面的注释。

示例

import time

print(time.tzname)

输出:

('中国标准时间', '中国夏令时')

下面是一些术语和惯例的解释

  1. epoch是时间开始的点,并且取决于平台。对于Windows,epoch是1970年1月1日(import time; time.gmtime(0),可以查看)
  2. 术语Unix纪元秒数是指自国际标准时间1970年1月1日零时以来经过的总秒数,通常不包括闰秒。在所有符合POSIX标准的平台上,闰秒都会从总秒数中被扣除。
  3. time库能处理的最小日期同datetime库是100年1月1日至9999年12月31日。
  4. 函数strptime()在接收到%y格式代码时可以将字符串解析为时间元组,如:

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)

  1. UTC是协调世界时(以前称为格林威治标准时间,或GMT)。缩写UTC不是错误,而是英语和法语之间的妥协。如 utc_time = time.gmtime()
  2. DST是夏令时,在一年中的一部分时间(通常)调整时区一小时。DST规则很神奇(由当地确定),并且每年都会发生变化。
  3. 使用以下函数在时间表示之间进行转换:

使用

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()

你可能感兴趣的:(Python,python,开发语言)