time — 時間訪問與轉換


此模組提供各種與時間相關的函式。有關相關功能,另請參閱 datetimecalendar 模組。

儘管此模組始終可用,但並非所有函式都在所有平臺上可用。此模組中定義的大多數函式都呼叫同名的平臺 C 庫函式。查閱平臺文件有時可能會有幫助,因為這些函式的語義因平臺而異。

一些術語和慣例的解釋如下。

  • 紀元 是時間開始的點,即 time.gmtime(0) 的返回值。在所有平臺上,它都是 1970 年 1 月 1 日 00:00:00 (UTC)。

  • 術語 自紀元以來的秒數 指自紀元以來經過的總秒數,通常不包括 閏秒。在所有符合 POSIX 標準的平臺上,閏秒都從總數中排除。

  • 此模組中的函式可能無法處理 紀元 之前或遙遠未來的日期和時間。未來的截止點由 C 庫決定;對於 32 位系統,通常在 2038 年。

  • 函式 strptime() 在給定 %y 格式程式碼時可以解析 2 位年份。當解析 2 位年份時,它們根據 POSIX 和 ISO C 標準進行轉換:值 69–99 對映到 1969–1999,值 0–68 對映到 2000–2068。

  • UTC 是 協調世界時,它取代了 格林威治標準時間 或 GMT 作為國際時間計量的基礎。UTC 這個縮寫並非錯誤,而是符合早期獨立於語言的時間標準命名方案,例如 UT0、UT1 和 UT2。

  • DST 是夏令時,它在一年中的部分時間將時區調整(通常)一小時。DST 規則是神奇的(由當地法律決定),並且每年都可能變化。C 庫有一個包含當地規則的表(通常從系統檔案讀取以實現靈活性),並且是這方面唯一真正的智慧來源。

  • 各種即時函式的精度可能低於其值或引數所表達的單位所暗示的精度。例如,在大多數 Unix 系統上,時鐘每秒“嘀嗒”僅 50 或 100 次。

  • 另一方面,time()sleep() 的精度優於其 Unix 等效項:時間以浮點數表示,time() 返回可用的最準確時間(在可用時使用 Unix gettimeofday()),並且 sleep() 將接受帶非零小數的時間(在可用時使用 Unix select() 實現)。

  • gmtime()localtime()strptime() 返回,並由 asctime()mktime()strftime() 接受的時間值是一個包含 9 個整數的序列。gmtime()localtime()strptime() 的返回值也為各個欄位提供了屬性名稱。

    請參閱 struct_time 以獲取這些物件的描述。

    3.3 版本中已更改: 當平臺支援相應的 struct tm 成員時,struct_time 型別已擴充套件,以提供 tm_gmtofftm_zone 屬性。

    3.6 版本中已更改: struct_time 屬性 tm_gmtofftm_zone 現在在所有平臺上都可用。

  • 使用以下函式在時間表示之間進行轉換

    使用

    紀元以來的秒數

    struct_time 在 UTC

    gmtime()

    紀元以來的秒數

    struct_time 在本地時間

    localtime()

    struct_time 在 UTC

    紀元以來的秒數

    calendar.timegm()

    struct_time 在本地時間

    紀元以來的秒數

    mktime()

函式

time.asctime([t])

將由 gmtime()localtime() 返回的表示時間的元組或 struct_time 轉換為以下形式的字串:'Sun Jun 20 23:21:05 1993'。日欄位長兩個字元,如果日是單個數字,則用空格填充,例如:'Wed Jun  9 04:26:40 1993'

如果未提供 t,則使用 localtime() 返回的當前時間。asctime() 不使用區域設定資訊。

備註

與同名的 C 函式不同,asctime() 不新增尾隨換行符。

time.pthread_getcpuclockid(thread_id)

返回指定 thread_id 的執行緒特定 CPU 時間時鐘的 clk_id

使用 threading.get_ident()threading.Thread 物件的 ident 屬性來獲取適用於 thread_id 的值。

警告

傳遞無效或已過期的 thread_id 可能會導致未定義行為,例如段錯誤。

可用性:Unix

有關詳細資訊,請參閱 pthread_getcpuclockid(3) 手冊頁。

在 3.7 版本加入。

time.clock_getres(clk_id)

返回指定時鐘 clk_id 的解析度(精度)。有關 clk_id 接受值的列表,請參閱 時鐘 ID 常量

可用性: Unix。

在 3.3 版本加入。

time.clock_gettime(clk_id) float

返回指定時鐘 clk_id 的時間。有關 clk_id 接受值的列表,請參閱 時鐘 ID 常量

使用 clock_gettime_ns() 以避免由 float 型別引起的精度損失。

可用性: Unix。

在 3.3 版本加入。

time.clock_gettime_ns(clk_id) int

類似於 clock_gettime(),但以納秒為單位返回時間。

可用性: Unix。

在 3.7 版本加入。

time.clock_settime(clk_id, time: float)

設定指定時鐘 clk_id 的時間。目前,CLOCK_REALTIMEclk_id 唯一接受的值。

使用 clock_settime_ns() 以避免由 float 型別引起的精度損失。

可用性:Unix,不包括 Android,不包括 iOS。

在 3.3 版本加入。

time.clock_settime_ns(clk_id, time: int)

類似於 clock_settime(),但以納秒設定時間。

可用性:Unix,不包括 Android,不包括 iOS。

在 3.7 版本加入。

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))ctime() 不使用區域設定資訊。

time.get_clock_info(name)

以名稱空間物件形式獲取指定時鐘的資訊。支援的時鐘名稱及其對應的讀取值的函式是

結果具有以下屬性

  • adjustable: 如果時鐘可以向前或向後調整時間,則為 True,否則為 False。不指漸進的 NTP 速率調整。

  • implementation: 用於獲取時鐘值的底層 C 函式的名稱。有關可能的值,請參閱 時鐘 ID 常量

  • monotonic: 如果時鐘不能倒退,則為 True,否則為 False

  • resolution: 時鐘的以秒為單位的解析度 (float)

在 3.3 版本加入。

time.gmtime([secs])

將自 紀元 以來的秒數表示的時間轉換為 UTC 中的 struct_time,其中 dst 標誌始終為零。如果未提供 secs 或其值為 None,則使用 time() 返回的當前時間。忽略秒的小數部分。有關 struct_time 物件的描述,請參閱上文。有關此函式的逆操作,請參閱 calendar.timegm()

time.localtime([secs])

類似於 gmtime(),但轉換為本地時間。如果未提供 secs 或其值為 None,則使用 time() 返回的當前時間。當夏令時適用於給定時間時,dst 標誌設定為 1

如果時間戳超出了平臺 C localtime()gmtime() 函式支援的值範圍,localtime() 可能會引發 OverflowError,並且在 localtime()gmtime() 失敗時引發 OSError。這通常限制在 1970 年到 2038 年之間。

time.mktime(t)

這是 localtime() 的逆函式。其引數是 struct_time 或完整的 9 元組(因為需要 dst 標誌;如果未知,使用 -1 作為 dst 標誌),它以 本地 時間(而非 UTC)表示時間。它返回一個浮點數,以與 time() 相容。如果輸入值無法表示為有效時間,將引發 OverflowErrorValueError(具體取決於無效值是由 Python 捕獲還是由底層 C 庫捕獲)。它可以生成時間的最早日期取決於平臺。

time.monotonic() float

返回單調時鐘的值(以小數秒為單位),即不能倒退的時鐘。該時鐘不受系統時鐘更新的影響。返回值的參考點未定義,因此只有兩次呼叫結果之間的差異才有效。

時鐘

  • 在 Windows 上,呼叫 QueryPerformanceCounter()QueryPerformanceFrequency()

  • 在 macOS 上,呼叫 mach_absolute_time()mach_timebase_info()

  • 在 HP-UX 上,呼叫 gethrtime()

  • 如果可用,呼叫 clock_gettime(CLOCK_HIGHRES)

  • 否則,呼叫 clock_gettime(CLOCK_MONOTONIC)

使用 monotonic_ns() 以避免由 float 型別引起的精度損失。

在 3.3 版本加入。

3.5 版本中已更改: 該函式現在始終可用,並且所有程序的時鐘現在都相同。

3.10 版本中已更改: 在 macOS 上,時鐘現在對所有程序都相同。

time.monotonic_ns() int

類似於 monotonic(),但以納秒為單位返回時間。

在 3.7 版本加入。

time.perf_counter() float

返回效能計數器的值(以小數秒為單位),即具有最高可用解析度以測量短持續時間的時鐘。它包括睡眠期間經過的時間。時鐘對所有程序都相同。返回值的參考點未定義,因此只有兩次呼叫結果之間的差異才有效。

CPython 實現細節: 在 CPython 上,使用與 time.monotonic() 相同的時鐘,並且是一個單調時鐘,即不能倒退的時鐘。

使用 perf_counter_ns() 以避免由 float 型別引起的精度損失。

在 3.3 版本加入。

3.10 版本中已更改: 在 Windows 上,時鐘現在對所有程序都相同。

3.13 版本中已更改: 使用與 time.monotonic() 相同的時鐘。

time.perf_counter_ns() int

類似於 perf_counter(),但以納秒為單位返回時間。

在 3.7 版本加入。

time.process_time() float

返回當前程序的系統和使用者 CPU 時間之和(以小數秒為單位)。它不包括睡眠期間經過的時間。根據定義,它是程序範圍的。返回值的參考點未定義,因此只有兩次呼叫結果之間的差異才有效。

使用 process_time_ns() 以避免由 float 型別引起的精度損失。

在 3.3 版本加入。

time.process_time_ns() int

類似於 process_time(),但以納秒為單位返回時間。

在 3.7 版本加入。

time.sleep(secs)

暫停呼叫執行緒的執行,持續給定秒數。引數可以是浮點數,以指示更精確的睡眠時間。

如果睡眠被訊號中斷,且訊號處理程式未引發異常,則會重新計算超時時間並重新開始睡眠。

由於系統中其他活動的排程,暫停時間可能會任意長於請求時間。

Windows 實現

在 Windows 上,如果 secs 為零,執行緒會將剩餘的時間片讓給任何準備執行的其他執行緒。如果沒有其他執行緒準備執行,函式會立即返回,並且執行緒繼續執行。在 Windows 8.1 及更高版本上,實現使用 高解析度計時器,它提供 100 納秒的解析度。如果 secs 為零,則使用 Sleep(0)

Unix 實現

  • 如果可用,使用 clock_nanosleep()(解析度:1 納秒);

  • 或者,如果可用,使用 nanosleep()(解析度:1 納秒);

  • 或者,使用 select()(解析度:1 微秒)。

備註

要模擬“無操作”,請使用 pass 而不是 time.sleep(0)

要自願放棄 CPU,請指定即時 排程策略,並改用 os.sched_yield()

引發一個 審計事件 time.sleep,引數為 secs

3.5 版本中已更改: 該函式現在至少會睡眠 secs 秒,即使睡眠被訊號中斷,除非訊號處理程式引發異常(有關原理,請參閱 PEP 475)。

3.11 版本中已更改: 在 Unix 上,現在如果可用,則使用 clock_nanosleep()nanosleep() 函式。在 Windows 上,現在使用可等待計時器。

3.13 版本中已更改: 引發審計事件。

time.strftime(format[, t])

將由 gmtime()localtime() 返回的表示時間的元組或 struct_time 轉換為由 format 引數指定的字串。如果未提供 t,則使用 localtime() 返回的當前時間。format 必須是一個字串。如果 t 中的任何欄位超出允許範圍,則引發 ValueError

0 是時間元組中任何位置的合法引數;如果它通常是非法的,則該值將被強制轉換為正確的值。

以下指令可以嵌入到 format 字串中。它們不帶可選的欄位寬度和精度規範,並替換為 strftime() 結果中指示的字元。

指令

含義

備註

%a

區域設定的縮寫工作日名稱。

%A

區域設定的完整工作日名稱。

%b

區域設定的縮寫月份名稱。

%B

區域設定的完整月份名稱。

%c

區域設定的適當日期和時間表示。

%d

月份中的日期,以十進位制數字 [01,31] 表示。

%f

微秒,以十進位制數字表示。

[000000,999999].

(1)

%H

小時(24 小時制),以十進位制數字 [00,23] 表示。

%I

小時(12 小時制),以十進位制數字 [01,12] 表示。

%j

一年中的第幾天,以十進位制數字 [001,366] 表示。

%m

月份,以十進位制數字 [01,12] 表示。

%M

分鐘,以十進位制數字 [00,59] 表示。

%p

區域設定的 AM 或 PM 等效項。

(2)

%S

秒,以十進位制數字 [00,61] 表示。

(3)

%U

一年中的週數(週日作為一週的第一天),以十進位制數字 [00,53] 表示。新年中第一個週日之前的任何一天都被視為第 0 周。

(4)

%u

星期幾(週一為 1;週日為 7),以十進位制數字 [1, 7] 表示。

%w

工作日,以十進位制數字 [0(週日),6] 表示。

%W

一年中的週數(週一作為一週的第一天),以十進位制數字 [00,53] 表示。新年中第一個週一之前的任何一天都被視為第 0 周。

(4)

%x

區域設定的適當日期表示。

%X

區域設定的適當時間表示。

%y

不帶世紀的年份,以十進位制數字 [00,99] 表示。

%Y

帶世紀的年份,以十進位制數字表示。

%z

時區偏移量,表示與 UTC/GMT 的正或負時間差,格式為 +HHMM 或 -HHMM,其中 H 表示十進位制小時數字,M 表示十進位制分鐘數字 [-23:59, +23:59]。[1]

%Z

時區名稱(如果不存在時區,則無字元)。已棄用。[1]

%G

ISO 8601 年份(類似於 %Y,但遵循 ISO 8601 日曆年的規則)。年份從包含日曆年第一個週四的那一週開始。

%V

ISO 8601 週數(以十進位制數字 [01,53] 表示)。一年中的第一週是包含該年第一個週四的那一週。週一是一週的開始。

%%

字面上的 '%' 字元。

備註

  1. %f 格式指令僅適用於 strptime(),不適用於 strftime()。但是,另請參閱 datetime.datetime.strptime()datetime.datetime.strftime(),其中 %f 格式指令 適用於微秒

  2. strptime() 函式一起使用時,%p 指令僅在 %I 指令用於解析小時時才影響輸出小時欄位。

  1. 範圍確實是 061;值 60 在表示 閏秒 的時間戳中有效,值 61 為歷史原因而支援。

  2. strptime() 函式一起使用時,%U%W 僅在指定了星期幾和年份時才用於計算。

以下是一個示例,其日期格式與 RFC 2822 網際網路電子郵件標準中指定的格式相容。[1]

>>> 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) 文件。

在某些平臺上,可選的欄位寬度和精度規範可以緊跟在指令的初始 '%' 之後,順序如下;這也不具有可移植性。除了 %j 之外,欄位寬度通常為 2,%j 為 3。

time.strptime(string[, format])

根據格式解析表示時間的字串。返回值是 gmtime()localtime() 返回的 struct_time

format 引數使用與 strftime() 相同的指令;它預設為 "%a %b %d %H:%M:%S %Y",這與 ctime() 返回的格式匹配。如果 string 無法根據 format 進行解析,或者解析後有額外的資料,則會引發 ValueError。當無法推斷更精確的值時,用於填充任何缺失資料的預設值為 (1900, 1, 1, 0, 0, 0, 0, 1, -1)stringformat 都必須是字串。

例如:

>>> 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 是否為 True。因此,它具有平臺特定性,除了識別始終已知的 UTC 和 GMT(並被視為非夏令時時區)。

僅支援文件中指定的指令。由於 strftime() 是按平臺實現的,因此它有時會提供比列出的更多的指令。但是 strptime() 獨立於任何平臺,因此不一定支援所有未文件化為支援的可用指令。

class time.struct_time

gmtime()localtime()strptime() 返回的時間值序列的型別。它是一個具有 命名元組 介面的物件:可以透過索引和屬性名稱訪問值。存在以下值

索引

屬性

0

tm_year

(例如,1993)

1

tm_mon

範圍 [1, 12]

2

tm_mday

範圍 [1, 31]

3

tm_hour

範圍 [0, 23]

4

tm_min

範圍 [0, 59]

5

tm_sec

範圍 [0, 61];請參閱 strftime() 中的 注 (2)

6

tm_wday

範圍 [0, 6];星期一為 0

7

tm_yday

範圍 [1, 366]

8

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

以浮點數形式返回自 紀元 以來的秒數。 閏秒 的處理取決於平臺。在 Windows 和大多數 Unix 系統上,閏秒不計入自 紀元 以來的秒數。這通常被稱為 Unix 時間

請注意,即使時間總是以浮點數返回,並非所有系統都提供比 1 秒更精確的時間。雖然此函式通常返回非遞減值,但如果系統時鐘在兩次呼叫之間被設定回,它可能會返回低於上次呼叫的值。

time() 返回的數字可以透過將其傳遞給 gmtime() 函式轉換為 UTC 中的更常見時間格式(即年、月、日、小時等),或透過將其傳遞給 localtime() 函式轉換為本地時間。在這兩種情況下,都會返回一個 struct_time 物件,可以從中以屬性形式訪問日曆日期的組成部分。

時鐘

  • 在 Windows 上,呼叫 GetSystemTimePreciseAsFileTime()

  • 如果可用,呼叫 clock_gettime(CLOCK_REALTIME)

  • 否則,呼叫 gettimeofday()

使用 time_ns() 以避免由 float 型別引起的精度損失。

3.13 版本中已更改: 在 Windows 上,呼叫 GetSystemTimePreciseAsFileTime() 而不是 GetSystemTimeAsFileTime()

time.time_ns() int

類似於 time(),但以自 紀元 以來的納秒整數返回時間。

在 3.7 版本加入。

time.thread_time() float

返回當前執行緒的系統和使用者 CPU 時間之和(以小數秒為單位)。它不包括睡眠期間經過的時間。根據定義,它是執行緒特定的。返回值的參考點未定義,因此只有同一執行緒中兩次呼叫結果之間的差異才有效。

使用 thread_time_ns() 以避免由 float 型別引起的精度損失。

可用性:Linux,Unix,Windows。

支援 CLOCK_THREAD_CPUTIME_ID 的 Unix 系統。

在 3.7 版本加入。

time.thread_time_ns() int

類似於 thread_time(),但以納秒為單位返回時間。

在 3.7 版本加入。

time.tzset()

重置庫例程使用的時間轉換規則。環境變數 TZ 指定了如何執行此操作。它還將設定變數 tzname(來自 TZ 環境變數)、timezone(非 DST 秒,西經 UTC)、altzone(DST 秒,西經 UTC)和 daylight(如果及時區沒有任何夏令時規則,則為 0;如果過去、現在或將來有夏令時適用,則為非零)。

可用性: Unix。

備註

儘管在許多情況下,更改 TZ 環境變數可能會影響諸如 localtime() 等函式的輸出而無需呼叫 tzset(),但不應依賴此行為。

TZ 環境變數不應包含空格。

TZ 環境變數的標準格式是(為清晰起見添加了空格)

std offset [dst [offset [,start[/time], end[/time]]]]

其中元件為

stddst

三個或更多字母數字字元,給出時區縮寫。這些將傳播到 time.tzname

偏移

偏移量格式為:± hh[:mm[:ss]]。這表示新增到本地時間以到達 UTC 的值。如果前面有“−”,則時區位於本初子午線以東;否則,它位於西部。如果 dst 後沒有偏移量,則夏季時間假定比標準時間提前一小時。

start[/time], end[/time]

指示何時轉換為夏令時以及何時從夏令時轉換回來。開始和結束日期的格式是以下之一

Jn

儒略日 n (1 <= n <= 365)。閏日不計算在內,因此在所有年份中,2 月 28 日是第 59 天,3 月 1 日是第 60 天。

n

基於零的儒略日(0 <= n <= 365)。閏日被計算在內,並且可以指代 2 月 29 日。

Mm.n.d

一年中第 m 月的第 n 周的第 d 天 (0 <= d <= 6) (1 <= n <= 5, 1 <= m <= 12,其中第 5 周表示“m 月的最後一個 d 天”,可能出現在第四周或第五週)。第 1 周是 d 天首次出現的那一週。第零天是星期日。

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)上,使用系統的 zoneinfo (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')

時鐘 ID 常量

這些常量用作 clock_getres()clock_gettime() 的引數。

time.CLOCK_BOOTTIME

CLOCK_MONOTONIC 相同,只是它還包括系統暫停的任何時間。

這允許應用程式獲取感知暫停的單調時鐘,而無需處理 CLOCK_REALTIME 的複雜性,如果使用 settimeofday() 或類似方法更改時間,它可能會出現不連續性。

可用性:Linux >= 2.6.39。

在 3.7 版本加入。

time.CLOCK_HIGHRES

Solaris 作業系統有一個 CLOCK_HIGHRES 計時器,它嘗試使用最佳硬體源,並可能提供接近納秒的解析度。CLOCK_HIGHRES 是不可調整的高解析度時鐘。

可用性:Solaris。

在 3.3 版本加入。

time.CLOCK_MONOTONIC

無法設定的時鐘,表示自某個未指定起點以來的單調時間。

可用性: Unix。

在 3.3 版本加入。

time.CLOCK_MONOTONIC_RAW

類似於 CLOCK_MONOTONIC,但提供對不受 NTP 調整影響的基於原始硬體時間值的訪問。

可用性:Linux >= 2.6.28,macOS >= 10.12。

在 3.3 版本加入。

time.CLOCK_MONOTONIC_RAW_APPROX

類似於 CLOCK_MONOTONIC_RAW,但讀取系統在上下文切換時快取的值,因此精度較低。

可用性:macOS >= 10.12。

在 3.13 版本加入。

time.CLOCK_PROCESS_CPUTIME_ID

來自 CPU 的高解析度每程序計時器。

可用性: Unix。

在 3.3 版本加入。

time.CLOCK_PROF

來自 CPU 的高解析度每程序計時器。

可用性:FreeBSD, NetBSD >= 7, OpenBSD。

在 3.7 版本加入。

time.CLOCK_TAI

國際原子時

系統必須具有當前的閏秒錶才能給出正確答案。PTP 或 NTP 軟體可以維護閏秒錶。

可用性: Linux。

在 3.9 版本中新增。

time.CLOCK_THREAD_CPUTIME_ID

執行緒專用的 CPU 時間時鐘。

可用性: Unix。

在 3.3 版本加入。

time.CLOCK_UPTIME

其絕對值是系統執行且未暫停的時間,提供準確的正常執行時間測量,包括絕對值和間隔。

可用性:FreeBSD、OpenBSD >= 5.5。

在 3.7 版本加入。

time.CLOCK_UPTIME_RAW

單調遞增的時鐘,跟蹤自任意點以來的時間,不受頻率或時間調整的影響,並且在系統休眠時不遞增。

可用性:macOS >= 10.12。

在 3.8 版本加入。

time.CLOCK_UPTIME_RAW_APPROX

類似於 CLOCK_UPTIME_RAW,但該值在上下文切換時由系統快取,因此精度較低。

可用性:macOS >= 10.12。

在 3.13 版本加入。

以下常量是唯一可以傳送給 clock_settime() 的引數。

time.CLOCK_REALTIME

即時時鐘。設定此計時器需要適當的許可權。所有程序的計時器都相同。

可用性: Unix。

在 3.3 版本加入。

時區常量

time.altzone

如果定義了本地夏令時時區,則為該時區相對於 UTC 西邊的秒數偏移量。如果本地夏令時時區在 UTC 的東邊(例如西歐,包括英國),則此值為負數。僅當 daylight 非零時才使用此值。請參閱下面的註釋。

time.daylight

如果定義了夏令時時區,則為非零值。請參閱下面的註釋。

time.timezone

本地(非夏令時)時區相對於 UTC 西邊的秒數偏移量(在大多數西歐為負數,在美國為正數,在英國為零)。請參閱下面的註釋。

time.tzname

一個包含兩個字串的元組:第一個是本地非夏令時時區的名稱,第二個是本地夏令時時區的名稱。如果未定義夏令時時區,則不應使用第二個字串。請參閱下面的註釋。

備註

對於上述時區常量(altzonedaylighttimezonetzname),其值由模組載入時或最後一次呼叫 tzset() 時生效的時區規則確定,並且可能與過去的時間不符。建議使用 localtime()tm_gmtofftm_zone 結果來獲取時區資訊。

參見

模組 datetime

更面向物件的日期和時間介面。

模組 locale

國際化服務。區域設定會影響 strftime()strptime() 中許多格式說明符的解釋。

模組 calendar

通用的日曆相關函式。timegm() 是此模組中 gmtime() 的逆操作。

腳註