>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
'Thu, 28 Jun 2001 14:17:15 +0000'
某些平台可能支持其他指令,但只有此处列出的指令具有 ANSI C 标准化的含义。要查看平台支持的完整格式代码集,请参阅 strftime(3) 文档。
在某些平台上,可选的字段宽度和精度规范可以按照以下顺序紧跟在指令的初始 '%'
之后;这也不可移植。字段宽度通常为2,除了 %j
,它是3。
time.strptime(string[, format])
根据格式解析表示时间的字符串。 返回值为一个被 gmtime()
或 localtime()
返回的 struct_time
。
format 参数使用与 strftime()
相同的指令。 它默认为匹配 ctime()
所返回的格式 "%a %b %d %H:%M:%S %Y"`
。 如果 string 不能根据 format 来解析,或者解析后它有多余的数据,则会引发 ValueError
。 当无法推断出更准确的值时,用于填充任何缺失数据的默认值是 (1900, 1, 1, 0, 0, 0, 0, 1, -1)
。 string 和 format 都必须为字符串。
>>> 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)
支持 %Z
指令是基于 tzname
中包含的值以及 daylight
是否为真。因此,它是特定于平台的,除了识别始终已知的 UTC 和 GMT (并且被认为是非夏令时时区)。
仅支持文档中指定的指令。因为每个平台都实现了 strftime()
,它有时会提供比列出的指令更多的指令。但是 strptime()
独立于任何平台,因此不一定支持所有未记录为支持的可用指令。
class time.struct_time
返回的时间值序列的类型为 gmtime()
、 localtime()
和 strptime()
。它是一个带有 named tuple 接口的对象:可以通过索引和属性名访问值。 存在以下值:
tm_year
(例如,1993)
tm_mon
range [1, 12]
tm_day
range [1, 31]
tm_hour
range [0, 23]
tm_min
range [0, 59]
tm_sec
range [0, 61];参见 strftime()
中的 注释 (2)
tm_wday
取值范围 [0, 6];周一为 0
tm_yday
range [1, 366]
tm_isdst
0, 1 或 -1;如下所示
tm_zone
时区名称的缩写
tm_gmtoff
以秒为单位的UTC以东偏离
请注意,与C结构不同,月份值是 [1,12] 的范围,而不是 [0,11] 。
在调用 mktime()
时, tm_isdst
可以在夏令时生效时设置为1,而在夏令时不生效时设置为0。 值-1表示这是未知的,并且通常会导致填写正确的状态。
当一个长度不正确的元组被传递给期望 struct_time
的函数,或者具有错误类型的元素时,会引发 TypeError
。
time.time() → float
返回以浮点数表示的从 epoch 开始的秒数形式的时间。 对 leap seconds 的处理取决于具体平台。 在 Windows 和大多数 Unix 系统中,闰秒不会被计入从 epoch 开始的秒数形式的时间中。 这通常被称为 Unix 时间。
请注意,即使时间总是作为浮点数返回,但并非所有系统都提供高于1秒的精度。虽然此函数通常返回非递减值,但如果在两次调用之间设置了系统时钟,则它可以返回比先前调用更低的值。
返回的数字 time()
可以通过将其传递给 gmtime()
函数或转换为UTC中更常见的时间格式(即年、月、日、小时等)或通过将它传递给 localtime()
函数获得本地时间。在这两种情况下都返回一个 struct_time
对象,日历日期组件可以从中作为属性访问。
使用 time_ns()
以避免 float
类型导致的精度损失。
time.thread_time() → float
(以小数表示的秒为单位)返回当前线程的系统和用户 CPU 时间的总计值。 它不包括睡眠状态所消耗的时间。 根据定义它只作用于线程范围。 返回值的参考点未被定义,因此只有两次调用之间的差值才是有效的。
使用 thread_time_ns()
以避免 float
类型导致的精度损失。
可用性: Linux, Unix, Windows。
支持 CLOCK_THREAD_CPUTIME_ID
的 Unix 系统。
在 3.7 版本加入.
time.tzset()
重置库例程使用的时间转换规则。环境变量 TZ
指定如何完成。它还将设置变量 tzname
(来自 TZ
环境变量), timezone
(UTC的西部非DST秒), altzone
(UTC以西的DST秒)和 daylight
(如果此时区没有任何夏令时规则则为0,如果有夏令时适用的时间,无论过去、现在或未来,则为非零)。
可用性: Unix。
虽然在很多情况下,更改 TZ
环境变量而不调用 tzset()
可能会影响函数的输出,例如 localtime()
,不应该依赖此行为。
TZ
不应该包含空格。
TZ
环境变量的标准格式是(为了清晰起见,添加了空格):
std offset [dst [offset [,start[/time], end[/time]]]]
组件的位置是:
std
和 dst
三个或更多字母数字,给出时区缩写。这些将传到 time.tzname
offset
偏移量的形式为: ± hh[:mm[:ss]]
。这表示添加到达UTC的本地时间的值。如果前面有 '-' ,则时区位于本初子午线的东边;否则,在它是西边。如果dst之后没有偏移,则假设夏令时比标准时间提前一小时。
start[/time], end[/time]
指示何时更改为DST和从DST返回。开始日期和结束日期的格式为以下之一:
Jn
Julian日 n (1 <= n <= 365)。闰日不计算在内,因此在所有年份中,2月28日是第59天,3月1日是第60天。
n
从零开始的Julian日(0 <= n <= 365)。 闰日计入,可以引用2月29日。
Mm.n.d
一年中 m 月的第 n 周(1 <= n <= 5 ,1 <= m <= 12 ,第 5 周表示 “可能在 m 月第 4 周或第 5 周出现的最后第 d 日”)的第 d 天(0 <= d <= 6)。 第 1 周是第 d 天发生的第一周。 第 0 天是星期天。
time
的格式与 offset
的格式相同,但不允许使用前导符号( '-' 或 '+' )。如果没有给出时间,则默认值为02:00:00。
>>> os.environ['TZ'] = 'EST+05EDT,M4.1.0,M10.5.0'
>>> time.tzset()
>>> time.strftime('%X %x %Z')
'02:07:36 05/08/03 EDT'
>>> os.environ['TZ'] = 'AEST-10AEDT-11,M10.5.0,M3.5.0'
>>> time.tzset()
>>> time.strftime('%X %x %Z')
'16:08:12 05/08/03 AEST'
在许多Unix系统(包括 *BSD , Linux , Solaris 和 Darwin 上),使用系统的区域信息( tzfile(5) )数据库来指定时区规则会更方便。为此,将 TZ
环境变量设置为所需时区数据文件的路径,相对于系统 'zoneinfo' 时区数据库的根目录,通常位于 /usr/share/zoneinfo
。 例如,'US/Eastern'
、 'Australia/Melbourne'
、 'Egypt'
或 'Europe/Amsterdam'
。
>>> os.environ['TZ'] = 'US/Eastern'
>>> time.tzset()
>>> time.tzname
('EST', 'EDT')
>>> os.environ['TZ'] = 'Egypt'
>>> time.tzset()
>>> time.tzname
('EET', 'EEST')
time.CLOCK_BOOTTIME
与 CLOCK_MONOTONIC
相同,除了它还包括系统暂停的任何时间。
这允许应用程序获得一个暂停感知的单调时钟,而不必处理 CLOCK_REALTIME
的复杂性,如果使用 settimeofday()
或类似的时间更改时间可能会有不连续性。
可用性: Linux >= 2.6.39。
在 3.7 版本加入.
time.CLOCK_HIGHRES
Solaris OS 有一个 CLOCK_HIGHRES
计时器,试图使用最佳硬件源,并可能提供接近纳秒的分辨率。 CLOCK_HIGHRES
是不可调节的高分辨率时钟。
可用性: Solaris.
在 3.3 版本加入.
对于上述时区常量 (altzone
, daylight
, timezone
和 tzname
),该值由当模块加载或 tzset()
最后一次被调用时生效的时区规则确定并且对于已过去的时间可能不正确。 建议使用来自 localtime()
结果的 tm_gmtoff
和 tm_zone
来获取时区信息。
模块 datetime
更多面向对象的日期和时间接口。
模块 locale
国际化服务。 区域设置会影响 strftime()
和 strptime()
中许多格式说明符的解析。
模块 calendar
一般日历相关功能。这个模块的 timegm()
是函数 gmtime()
的反函数。
[1]
(1,2,3)
现在不推荐使用 %Z
,但是所有 ANSI C 库都不支持扩展为首选小时/分钟偏移量的 %z
转义符。 此外,严格的 1982 年原始 RFC 822 标准要求两位数的年份( %y
而不是 %Y
),但是实际在2000年之前很久就转移到了4位数年。之后, RFC 822 已经废弃了,4位数的年份首先被推荐 RFC 1123 ,然后被 RFC 2822 强制执行。
This page is licensed under the Python Software Foundation License Version 2.
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
See History and License for more information.
The Python Software Foundation is a non-profit corporation.
Please donate.
最后更新于 Feb 26, 2024 (09:31 UTC).
Found a bug?