time --- 時(shí)間的訪(fǎng)問(wèn)和轉換?


該模塊提供了各種與時(shí)間相關(guān)的函數。相關(guān)功能還可以參閱 datetimecalendar 模塊。

盡管所有平臺皆可使用此模塊,但模塊內的函數并非所有平臺都可用。此模塊中定義的大多數函數的實(shí)現都是調用其所在平臺的C語(yǔ)言庫的同名函數。因為這些函數的語(yǔ)義可能因平臺而異,所以使用時(shí)最好查閱對應平臺的相關(guān)文檔。

下面是一些術(shù)語(yǔ)和慣例的解釋.

  • The epoch is the point where the time starts, the return value of time.gmtime(0). It is January 1, 1970, 00:00:00 (UTC) on all platforms.

  • 術(shù)語(yǔ) 紀元秒數 是指自 epoch (紀元)時(shí)間點(diǎn)以來(lái)經(jīng)過(guò)的總秒數,通常不包括 閏秒。 在所有符合 POSIX 標準的平臺上,閏秒都不會(huì )記錄在總秒數中。

  • The functions in this module may not handle dates and times before the epoch or far in the future. The cut-off point in the future is determined by the C library; for 32-bit systems, it is typically in 2038.

  • 函數 strptime() 在接收到 %y 格式代碼時(shí)可以解析使用 2 位數表示的年份。當解析 2 位數年份時(shí),函數會(huì )按照 POSIX 和 ISO C 標準進(jìn)行年份轉換:數值 69--99 被映射為 1969--1999;數值 0--68 被映射為 2000--2068。

  • UTC是協(xié)調世界時(shí)(Coordinated Universal Time)的縮寫(xiě)。它以前也被稱(chēng)為格林威治標準時(shí)間(GMT)。使用UTC而不是CUT作為縮寫(xiě)是英語(yǔ)與法語(yǔ)(Temps Universel Coordonné)之間妥協(xié)的結果,不是什么低級錯誤。

  • DST是夏令時(shí)(Daylight Saving Time)的縮寫(xiě),在一年的某一段時(shí)間中將當地時(shí)間調整(通常)一小時(shí)。 DST的規則非常神奇(由當地法律確定),并且每年的起止時(shí)間都不同。C語(yǔ)言庫中有一個(gè)表格,記錄了各地的夏令時(shí)規則(實(shí)際上,為了靈活性,C語(yǔ)言庫通常是從某個(gè)系統文件中讀取這張表)。從這個(gè)角度而言,這張表是夏令時(shí)規則的唯一權威真理。

  • 由于平臺限制,各種實(shí)時(shí)函數的精度可能低于其值或參數所要求(或給定)的精度。例如,在大多數Unix系統上,時(shí)鐘頻率僅為每秒50或100次。

  • 另一方面, time()sleep() 的精度優(yōu)于它們的Unix等價(jià)物:時(shí)間表示為浮點(diǎn)數,time() 返回最準確的時(shí)間 (使用Unix gettimeofday() 如果可用),并且 sleep() 將接受非零分數的時(shí)間(Unix select() 用于實(shí)現此功能,如果可用)。

  • 時(shí)間值由 gmtime(),localtime()strptime() 返回,并被 asctime(), mktime()strftime() 接受,是一個(gè) 9 個(gè)整數的序列。 gmtime(), localtime()strptime() 的返回值還提供各個(gè)字段的屬性名稱(chēng)。

    請參閱 struct_time 以獲取這些對象的描述。

    在 3.3 版更改: 在平臺支持相應的 struct tm 成員時(shí),struct_time 類(lèi)型被擴展提供 tm_gmtofftm_zone 屬性。

    在 3.6 版更改: struct_time 的屬性 tm_gmtofftm_zone 現在可在所有平臺上使用。

  • 使用以下函數在時(shí)間表示之間進(jìn)行轉換:

    使用

    自紀元以來(lái)的秒數

    UTC 的 struct_time

    gmtime()

    自紀元以來(lái)的秒數

    本地時(shí)間的 struct_time

    localtime()

    UTC 的 struct_time

    自紀元以來(lái)的秒數

    calendar.timegm()

    本地時(shí)間的 struct_time

    自紀元以來(lái)的秒數

    mktime()

函數?

time.asctime([t])?

轉換由 gmtime()localtime() 所返回的表示時(shí)間的元組或 struct_time 為以下形式的字符串: 'Sun Jun 20 23:21:05 1993'。 日期字段的長(cháng)度為兩個(gè)字符,如果日期只有一個(gè)數字則會(huì )以零填充,例如: 'Wed Jun  9 04:26:40 1993'。

如果未提供 t,則會(huì )使用 localtime() 所返回的當前時(shí)間。 asctime() 不會(huì )使用區域設置信息。

備注

與同名的C函數不同, asctime() 不添加尾隨換行符。

time.pthread_getcpuclockid(thread_id)?

返回指定的 thread_id 的特定于線(xiàn)程的CPU時(shí)間時(shí)鐘的 clk_id 。

使用 threading.Thread 對象的 threading.get_ident()ident 屬性為 thread_id 獲取合適的值。

警告

傳遞無(wú)效的或過(guò)期的 thread_id 可能會(huì )導致未定義的行為,例如段錯誤。

可用性 : Unix(有關(guān)詳細信息,請參見(jiàn) pthread_getcpuclockid(3) 的手冊頁(yè))。

3.7 新版功能.

time.clock_getres(clk_id)?

返回指定時(shí)鐘 clk_id 的分辨率(精度)。有關(guān) clk_id 的可接受值列表,請參閱 Clock ID 常量 。

可用性: Unix。

3.3 新版功能.

time.clock_gettime(clk_id) float?

返回指定 clk_id 時(shí)鐘的時(shí)間。有關(guān) clk_id 的可接受值列表,請參閱 Clock ID 常量 。

使用 clock_gettime_ns() 以避免 float 類(lèi)型導致的精度損失。

可用性: Unix。

3.3 新版功能.

time.clock_gettime_ns(clk_id) int?

clock_gettime() 相似,但返回時(shí)間為納秒。

可用性: Unix。

3.7 新版功能.

time.clock_settime(clk_id, time: float)?

設置指定 clk_id 時(shí)鐘的時(shí)間。 目前, CLOCK_REALTIMEclk_id 唯一可接受的值。

使用 clock_settime_ns() 以避免 float 類(lèi)型導致的精度損失。

可用性: Unix。

3.3 新版功能.

time.clock_settime_ns(clk_id, time: int)?

clock_settime() 相似,但設置時(shí)間為納秒。

可用性: Unix。

3.7 新版功能.

time.ctime([secs])?

Convert a time expressed in seconds since the epoch to a string of a form: 'Sun Jun 20 23:21:05 1993' representing local time. The day field is two characters long and is space padded if the day is a single digit, e.g.: 'Wed Jun  9 04:26:40 1993'.

如果 secs 未提供或為 None,則使用 time() 所返回的當前時(shí)間。 ctime(secs) 等價(jià)于 asctime(localtime(secs))。 ctime() 不會(huì )使用區域設置信息。

time.get_clock_info(name)?

獲取有關(guān)指定時(shí)鐘的信息作為命名空間對象。 支持的時(shí)鐘名稱(chēng)和讀取其值的相應函數是:

結果具有以下屬性:

  • adjustable : 如果時(shí)鐘可以自動(dòng)更改(例如通過(guò)NTP守護程序)或由系統管理員手動(dòng)更改,則為 True ,否則為 False 。

  • implementation : 用于獲取時(shí)鐘值的基礎C函數的名稱(chēng)。有關(guān)可能的值,請參閱 Clock ID 常量 。

  • monotonic :如果時(shí)鐘不能倒退,則為 True ,否則為 False 。

  • resolution : 以秒為單位的時(shí)鐘分辨率( float

3.3 新版功能.

time.gmtime([secs])?

Convert a time expressed in seconds since the epoch to a struct_time in UTC in which the dst flag is always zero. If secs is not provided or None, the current time as returned by time() is used. Fractions of a second are ignored. See above for a description of the struct_time object. See calendar.timegm() for the inverse of this function.

time.localtime([secs])?

gmtime() 相似但轉換為當地時(shí)間。如果未提供 secs 或為 None ,則使用由 time() 返回的當前時(shí)間。當 DST 適用于給定時(shí)間時(shí),dst標志設置為 1 。

localtime() may raise OverflowError, if the timestamp is outside the range of values supported by the platform C localtime() or gmtime() functions, and OSError on localtime() or gmtime() failure. It's common for this to be restricted to years between 1970 and 2038.

time.mktime(t)?

這是 localtime() 的反函數。它的參數是 struct_time 或者完整的 9 元組(因為需要 dst 標志;如果它是未知的則使用 -1 作為dst標志),它表示 local 的時(shí)間,而不是 UTC 。它返回一個(gè)浮點(diǎn)數,以便與 time() 兼容。如果輸入值不能表示為有效時(shí)間,則 OverflowErrorValueError 將被引發(fā)(這取決于Python或底層C庫是否捕獲到無(wú)效值)。它可以生成時(shí)間的最早日期取決于平臺。

time.monotonic() float?

(以小數表示的秒為單位)返回一個(gè)單調時(shí)鐘的值,即不能倒退的時(shí)鐘。 該時(shí)鐘不受系統時(shí)鐘更新的影響。 返回值的參考點(diǎn)未被定義,因此只有兩次調用之間的差值才是有效的。

使用 monotonic_ns() 以避免 float 類(lèi)型導致的精度損失。

3.3 新版功能.

在 3.5 版更改: 該功能現在始終可用且始終在系統范圍內。

在 3.10 版更改: 在 macOS 上,現在這個(gè)函數作用于全系統。

time.monotonic_ns() int?

monotonic() 相似,但是返回時(shí)間為納秒數。

3.7 新版功能.

time.perf_counter() float?

(以小數表示的秒為單位)返回一個(gè)性能計數器的值,即用于測量較短持續時(shí)間的具有最高有效精度的時(shí)鐘。 它會(huì )包括睡眠狀態(tài)所消耗的時(shí)間并且作用于全系統范圍。 返回值的參考點(diǎn)未被定義,因此只有兩次調用之間的差值才是有效的。

使用 perf_counter_ns() 以避免 float 類(lèi)型導致的精度損失。

3.3 新版功能.

在 3.10 版更改: 在 Windows 上,現在這個(gè)函數作用于全系統。

time.perf_counter_ns() int?

perf_counter() 相似,但是返回時(shí)間為納秒。

3.7 新版功能.

time.process_time() float?

(以小數表示的秒為單位)返回當前進(jìn)程的系統和用戶(hù) CPU 時(shí)間的總計值。 它不包括睡眠狀態(tài)所消耗的時(shí)間。 根據定義它只作用于進(jìn)程范圍。 返回值的參考點(diǎn)未被定義,因此只有兩次調用之間的差值才是有效的。

使用 process_time_ns() 以避免 float 類(lèi)型導致的精度損失。

3.3 新版功能.

time.process_time_ns() int?

process_time() 相似,但是返回時(shí)間為納秒。

3.7 新版功能.

time.sleep(secs)?

Suspend execution of the calling thread for the given number of seconds. The argument may be a floating point number to indicate a more precise sleep time.

If the sleep is interrupted by a signal and no exception is raised by the signal handler, the sleep is restarted with a recomputed timeout.

The suspension time may be longer than requested by an arbitrary amount, because of the scheduling of other activity in the system.

On Windows, if secs is zero, the thread relinquishes the remainder of its time slice to any other thread that is ready to run. If there are no other threads ready to run, the function returns immediately, and the thread continues execution. On Windows 8.1 and newer the implementation uses a high-resolution timer which provides resolution of 100 nanoseconds. If secs is zero, Sleep(0) is used.

Unix implementation:

  • Use clock_nanosleep() if available (resolution: 1 nanosecond);

  • Or use nanosleep() if available (resolution: 1 nanosecond);

  • Or use select() (resolution: 1 microsecond).

在 3.11 版更改: On Unix, the clock_nanosleep() and nanosleep() functions are now used if available. On Windows, a waitable timer is now used.

在 3.5 版更改: 現在,即使該睡眠過(guò)程被信號中斷,該函數也會(huì )保證調用它的線(xiàn)程至少會(huì )睡眠 secs 秒。信號處理例程拋出異常的情況除外。(欲了解我們做出這次改變的原因,請參見(jiàn) PEP 475

time.strftime(format[, t])?

轉換一個(gè)元組或 struct_time 表示的由 gmtime()localtime() 返回的時(shí)間到由 format 參數指定的字符串。如果未提供 t ,則使用由 localtime() 返回的當前時(shí)間。 format 必須是一個(gè)字符串。如果 t 中的任何字段超出允許范圍,則引發(fā) ValueError 。

0是時(shí)間元組中任何位置的合法參數;如果它通常是非法的,則該值被強制改為正確的值。

以下指令可以嵌入 format 字符串中。它們顯示時(shí)沒(méi)有可選的字段寬度和精度規范,并被 strftime() 結果中的指示字符替換:

指令

含意

備注

%a

本地化的縮寫(xiě)星期中每日的名稱(chēng)。

%A

本地化的星期中每日的完整名稱(chēng)。

%b

本地化的月縮寫(xiě)名稱(chēng)。

%B

本地化的月完整名稱(chēng)。

%c

本地化的適當日期和時(shí)間表示。

%d

十進(jìn)制數 [01,31] 表示的月中日。

%H

十進(jìn)制數 [00,23] 表示的小時(shí)(24小時(shí)制)。

%I

十進(jìn)制數 [01,12] 表示的小時(shí)(12小時(shí)制)。

%j

十進(jìn)制數 [001,366] 表示的年中日。

%m

十進(jìn)制數 [01,12] 表示的月。

%M

十進(jìn)制數 [00,59] 表示的分鐘。

%p

本地化的 AM 或 PM 。

(1)

%S

十進(jìn)制數 [00,61] 表示的秒。

(2)

%U

十進(jìn)制數 [00,53] 表示的一年中的周數(星期日作為一周的第一天)。 在第一個(gè)星期日之前的新年中的所有日子都被認為是在第 0 周。

(3)

%w

十進(jìn)制數 [0(星期日),6] 表示的周中日。

%W

十進(jìn)制數 [00,53] 表示的一年中的周數(星期一作為一周的第一天)。 在第一個(gè)星期一之前的新年中的所有日子被認為是在第 0 周。

(3)

%x

本地化的適當日期表示。

%X

本地化的適當時(shí)間表示。

%y

十進(jìn)制數 [00,99] 表示的沒(méi)有世紀的年份。

%Y

十進(jìn)制數表示的帶世紀的年份。

%z

Time zone offset indicating a positive or negative time difference from UTC/GMT of the form +HHMM or -HHMM, where H represents decimal hour digits and M represents decimal minute digits [-23:59, +23:59]. 1

%Z

Time zone name (no characters if no time zone exists). Deprecated. 1

%%

字面的 '%' 字符。

注釋?zhuān)?/p>

  1. 當與 strptime() 函數一起使用時(shí),如果使用 %I 指令來(lái)解析小時(shí), %p 指令只影響輸出小時(shí)字段。

  2. 范圍真的是 061 ;值 60 在表示 leap seconds 的時(shí)間戳中有效,并且由于歷史原因支持值 61 。

  3. 當與 strptime() 函數一起使用時(shí), %U%W 僅用于指定星期幾和年份的計算。

Here is an example, a format for dates compatible with that specified in the RFC 2822 Internet email standard. 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) 文檔。

在某些平臺上,可選的字段寬度和精度規范可以按照以下順序緊跟在指令的初始 '%' 之后;這也不可移植。字段寬度通常為2,除了 %j ,它是3。

time.strptime(string[, format])?

根據格式解析表示時(shí)間的字符串。 返回值為一個(gè)被 gmtime()localtime() 返回的 struct_time 。

format 參數使用與 strftime() 相同的指令。 它默認為匹配 ctime() 所返回的格式 "%a %b %d %H:%M:%S %Y"` 。 如果 string 不能根據 format 來(lái)解析,或者解析后它有多余的數據,則會(huì )引發(fā) ValueError。 當無(wú)法推斷出更準確的值時(shí),用于填充任何缺失數據的默認值是 (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 是否為真。因此,它是特定于平臺的,除了識別始終已知的 UTC 和 GMT (并且被認為是非夏令時(shí)時(shí)區)。

僅支持文檔中指定的指令。因為每個(gè)平臺都實(shí)現了 strftime() ,它有時(shí)會(huì )提供比列出的指令更多的指令。但是 strptime() 獨立于任何平臺,因此不一定支持所有未記錄為支持的可用指令。

class time.struct_time?

返回的時(shí)間值序列的類(lèi)型為 gmtime() 、 localtime()strptime() 。它是一個(gè)帶有 named tuple 接口的對象:可以通過(guò)索引和屬性名訪(fǎng)問(wèn)值。 存在以下值:

索引

屬性

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]; 見(jiàn) strftime() 介紹中的 (2)

6

tm_wday

range [0, 6] ,周一為 0

7

tm_yday

range [1, 366]

8

tm_isdst

0, 1 或 -1;如下所示

N/A

tm_zone

時(shí)區名稱(chēng)的縮寫(xiě)

N/A

tm_gmtoff

以秒為單位的UTC以東偏離

請注意,與C結構不同,月份值是 [1,12] 的范圍,而不是 [0,11] 。

在調用 mktime() 時(shí), tm_isdst 可以在夏令時(shí)生效時(shí)設置為1,而在夏令時(shí)不生效時(shí)設置為0。 值-1表示這是未知的,并且通常會(huì )導致填寫(xiě)正確的狀態(tài)。

當一個(gè)長(cháng)度不正確的元組被傳遞給期望 struct_time 的函數,或者具有錯誤類(lèi)型的元素時(shí),會(huì )引發(fā) TypeError 。

time.time() float?

Return the time in seconds since the epoch as a floating point number. The handling of leap seconds is platform dependent. On Windows and most Unix systems, the leap seconds are not counted towards the time in seconds since the epoch. This is commonly referred to as Unix time.

請注意,即使時(shí)間總是作為浮點(diǎn)數返回,但并非所有系統都提供高于1秒的精度。雖然此函數通常返回非遞減值,但如果在兩次調用之間設置了系統時(shí)鐘,則它可以返回比先前調用更低的值。

返回的數字 time() 可以通過(guò)將其傳遞給 gmtime() 函數或轉換為UTC中更常見(jiàn)的時(shí)間格式(即年、月、日、小時(shí)等)或通過(guò)將它傳遞給 localtime() 函數獲得本地時(shí)間。在這兩種情況下都返回一個(gè) struct_time 對象,日歷日期組件可以從中作為屬性訪(fǎng)問(wèn)。

使用 time_ns() 以避免 float 類(lèi)型導致的精度損失。

time.time_ns() int?

time() 相似,但返回時(shí)間為用整數表示的自 epoch 以來(lái)所經(jīng)過(guò)的納秒數。

3.7 新版功能.

time.thread_time() float?

(以小數表示的秒為單位)返回當前線(xiàn)程的系統和用戶(hù) CPU 時(shí)間的總計值。 它不包括睡眠狀態(tài)所消耗的時(shí)間。 根據定義它只作用于線(xiàn)程范圍。 返回值的參考點(diǎn)未被定義,因此只有兩次調用之間的差值才是有效的。

使用 thread_time_ns() 以避免 float 類(lèi)型導致的精度損失。

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

3.7 新版功能.

time.thread_time_ns() int?

thread_time() 相似,但返回納秒時(shí)間。

3.7 新版功能.

time.tzset()?

重置庫例程使用的時(shí)間轉換規則。環(huán)境變量 TZ 指定如何完成。它還將設置變量 tzname (來(lái)自 TZ 環(huán)境變量), timezone (UTC的西部非DST秒), altzone (UTC以西的DST秒)和 daylight (如果此時(shí)區沒(méi)有任何夏令時(shí)規則則為0,如果有夏令時(shí)適用的時(shí)間,無(wú)論過(guò)去、現在或未來(lái),則為非零)。

可用性: Unix。

備注

雖然在很多情況下,更改 TZ 環(huán)境變量而不調用 tzset() 可能會(huì )影響函數的輸出,例如 localtime() ,不應該依賴(lài)此行為。

TZ 不應該包含空格。

TZ 環(huán)境變量的標準格式是(為了清晰起見(jiàn),添加了空格):

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

組件的位置是:

stddst

三個(gè)或更多字母數字,給出時(shí)區縮寫(xiě)。這些將傳到 time.tzname

offset

偏移量的形式為: ± hh[:mm[:ss]] 。這表示添加到達UTC的本地時(shí)間的值。如果前面有 '-' ,則時(shí)區位于本初子午線(xiàn)的東邊;否則,在它是西邊。如果dst之后沒(méi)有偏移,則假設夏令時(shí)比標準時(shí)間提前一小時(shí)。

start[/time], end[/time]

指示何時(shí)更改為DST和從DST返回。開(kāi)始日期和結束日期的格式為以下之一:

Jn

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

n

從零開(kāi)始的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 天發(fā)生的第一周。 第 0 天是星期天。

time 的格式與 offset 的格式相同,但不允許使用前導符號( '-' 或 '+' )。如果沒(méi)有給出時(shí)間,則默認值為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) )數據庫來(lái)指定時(shí)區規則會(huì )更方便。為此,將 TZ 環(huán)境變量設置為所需時(shí)區數據文件的路徑,相對于系統 'zoneinfo' 時(shí)區數據庫的根目錄,通常位于 /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')

Clock ID 常量?

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

time.CLOCK_BOOTTIME?

CLOCK_MONOTONIC 相同,除了它還包括系統暫停的任何時(shí)間。

這允許應用程序獲得一個(gè)暫停感知的單調時(shí)鐘,而不必處理 CLOCK_REALTIME 的復雜性,如果使用 settimeofday() 或類(lèi)似的時(shí)間更改時(shí)間可能會(huì )有不連續性。

可用性: Linux 2.6.39 或更新

3.7 新版功能.

time.CLOCK_HIGHRES?

Solaris OS 有一個(gè) CLOCK_HIGHRES 計時(shí)器,試圖使用最佳硬件源,并可能提供接近納秒的分辨率。 CLOCK_HIGHRES 是不可調節的高分辨率時(shí)鐘。

可用性: Solaris.

3.3 新版功能.

time.CLOCK_MONOTONIC?

無(wú)法設置的時(shí)鐘,表示自某些未指定的起點(diǎn)以來(lái)的單調時(shí)間。

可用性: Unix。

3.3 新版功能.

time.CLOCK_MONOTONIC_RAW?

類(lèi)似于 CLOCK_MONOTONIC ,但可以訪(fǎng)問(wèn)不受NTP調整影響的原始硬件時(shí)間。

可用性: Linux 2.6.28 和更新版本, macOS 10.12 和更新版本。

3.3 新版功能.

time.CLOCK_PROCESS_CPUTIME_ID?

來(lái)自CPU的高分辨率每進(jìn)程計時(shí)器。

可用性: Unix。

3.3 新版功能.

time.CLOCK_PROF?

來(lái)自CPU的高分辨率每進(jìn)程計時(shí)器。

可用性: FreeBSD, NetBSD 7 或更新, OpenBSD.

3.7 新版功能.

time.CLOCK_TAI?

國際原子時(shí)間

該系統必須有一個(gè)當前閏秒表以便能給出正確的回答。 PTP 或 NTP 軟件可以用來(lái)維護閏秒表。

可用性: Linux。

3.9 新版功能.

time.CLOCK_THREAD_CPUTIME_ID?

特定于線(xiàn)程的CPU時(shí)鐘。

可用性: Unix。

3.3 新版功能.

time.CLOCK_UPTIME?

該時(shí)間的絕對值是系統運行且未暫停的時(shí)間,提供準確的正常運行時(shí)間測量,包括絕對值和間隔值。

可用性: FreeBSD, OpenBSD 5.5 或更新。

3.7 新版功能.

time.CLOCK_UPTIME_RAW?

單調遞增的時(shí)鐘,記錄從一個(gè)任意起點(diǎn)開(kāi)始的時(shí)間,不受頻率或時(shí)間調整的影響,并且當系統休眠時(shí)將不會(huì )遞增。

可用性: macOS 10.12 和更新版本。

3.8 新版功能.

以下常量是唯一可以發(fā)送到 clock_settime() 的參數。

time.CLOCK_REALTIME?

系統范圍的實(shí)時(shí)時(shí)鐘。 設置此時(shí)鐘需要適當的權限。

可用性: Unix。

3.3 新版功能.

時(shí)區常量?

time.altzone?

本地DST時(shí)區的偏移量,以UTC為單位的秒數,如果已定義。如果當地DST時(shí)區在UTC以東(如在西歐,包括英國),則是負數。 只有當 daylight 非零時(shí)才使用它。 見(jiàn)下面的注釋。

time.daylight?

如果定義了DST時(shí)區,則為非零。 見(jiàn)下面的注釋。

time.timezone?

本地(非DST)時(shí)區的偏移量,UTC以西的秒數(西歐大部分地區為負,美國為正,英國為零)。 見(jiàn)下面的注釋。

time.tzname?

兩個(gè)字符串的元組:第一個(gè)是本地非DST時(shí)區的名稱(chēng),第二個(gè)是本地DST時(shí)區的名稱(chēng)。 如果未定義DST時(shí)區,則不應使用第二個(gè)字符串。 見(jiàn)下面的注釋。

備注

對于上述時(shí)區常量( altzone 、 daylight 、 timezonetzname ),該值由模塊加載時(shí)有效的時(shí)區規則確定,或者最后一次 tzset() 被調用時(shí),并且在過(guò)去的時(shí)間可能不正確。建議使用來(lái)自 localtime() 結果的 tm_gmtofftm_zone 來(lái)獲取時(shí)區信息。

參見(jiàn)

模塊 datetime

更多面向對象的日期和時(shí)間接口。

模塊 locale

國際化服務(wù)。 區域設置會(huì )影響 strftime()strptime() 中許多格式說(shuō)明符的解析。

模塊 calendar

一般日歷相關(guān)功能。這個(gè)模塊的 timegm() 是函數 gmtime() 的反函數。

備注

1(1,2,3)

The use of %Z is now deprecated, but the %z escape that expands to the preferred hour/minute offset is not supported by all ANSI C libraries. Also, a strict reading of the original 1982 RFC 822 standard calls for a two-digit year (%y rather than %Y), but practice moved to 4-digit years long before the year 2000. After that, RFC 822 became obsolete and the 4-digit year has been first recommended by RFC 1123 and then mandated by RFC 2822.