time --- 時(shí)間的訪問和轉(zhuǎn)換?


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

盡管所有平臺(tái)皆可使用此模塊,但模塊內(nèi)的函數(shù)并非所有平臺(tái)都可用。此模塊中定義的大多數(shù)函數(shù)的實(shí)現(xiàn)都是調(diào)用其所在平臺(tái)的C語言庫(kù)的同名函數(shù)。因?yàn)檫@些函數(shù)的語義可能因平臺(tái)而異,所以使用時(shí)最好查閱對(duì)應(yīng)平臺(tái)的相關(guān)文檔。

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

  • 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ù)語 紀(jì)元秒數(shù) 是指自 epoch (紀(jì)元)時(shí)間點(diǎn)以來經(jīng)過的總秒數(shù),通常不包括 閏秒。 在所有符合 POSIX 標(biāo)準(zhǔn)的平臺(tái)上,閏秒都不會(huì)記錄在總秒數(shù)中。

  • 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.

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

  • UTC是協(xié)調(diào)世界時(shí)(Coordinated Universal Time)的縮寫。它以前也被稱為格林威治標(biāo)準(zhǔn)時(shí)間(GMT)。使用UTC而不是CUT作為縮寫是英語與法語(Temps Universel Coordonné)之間妥協(xié)的結(jié)果,不是什么低級(jí)錯(cuò)誤。

  • DST是夏令時(shí)(Daylight Saving Time)的縮寫,在一年的某一段時(shí)間中將當(dāng)?shù)貢r(shí)間調(diào)整(通常)一小時(shí)。 DST的規(guī)則非常神奇(由當(dāng)?shù)胤纱_定),并且每年的起止時(shí)間都不同。C語言庫(kù)中有一個(gè)表格,記錄了各地的夏令時(shí)規(guī)則(實(shí)際上,為了靈活性,C語言庫(kù)通常是從某個(gè)系統(tǒng)文件中讀取這張表)。從這個(gè)角度而言,這張表是夏令時(shí)規(guī)則的唯一權(quán)威真理。

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

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

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

    請(qǐng)參閱 struct_time 以獲取這些對(duì)象的描述。

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

    在 3.6 版更改: struct_time 的屬性 tm_gmtofftm_zone 現(xiàn)在可在所有平臺(tái)上使用。

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

    使用

    自紀(jì)元以來的秒數(shù)

    UTC 的 struct_time

    gmtime()

    自紀(jì)元以來的秒數(shù)

    本地時(shí)間的 struct_time

    localtime()

    UTC 的 struct_time

    自紀(jì)元以來的秒數(shù)

    calendar.timegm()

    本地時(shí)間的 struct_time

    自紀(jì)元以來的秒數(shù)

    mktime()

函數(shù)?

time.asctime([t])?

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

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

備注

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

time.pthread_getcpuclockid(thread_id)?

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

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

警告

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

可用性 : Unix(有關(guān)詳細(xì)信息,請(qǐng)參見 pthread_getcpuclockid(3) 的手冊(cè)頁)。

3.7 新版功能.

time.clock_getres(clk_id)?

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

可用性: Unix。

3.3 新版功能.

time.clock_gettime(clk_id) float?

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

使用 clock_gettime_ns() 以避免 float 類型導(dǎo)致的精度損失。

可用性: Unix。

3.3 新版功能.

time.clock_gettime_ns(clk_id) int?

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

可用性: Unix。

3.7 新版功能.

time.clock_settime(clk_id, time: float)?

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

使用 clock_settime_ns() 以避免 float 類型導(dǎo)致的精度損失。

可用性: Unix。

3.3 新版功能.

time.clock_settime_ns(clk_id, time: int)?

clock_settime() 相似,但設(shè)置時(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 未提供或?yàn)?None,則使用 time() 所返回的當(dāng)前時(shí)間。 ctime(secs) 等價(jià)于 asctime(localtime(secs))。 ctime() 不會(huì)使用區(qū)域設(shè)置信息。

time.get_clock_info(name)?

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

結(jié)果具有以下屬性:

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

  • implementation : 用于獲取時(shí)鐘值的基礎(chǔ)C函數(shù)的名稱。有關(guān)可能的值,請(qǐng)參閱 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() 相似但轉(zhuǎn)換為當(dāng)?shù)貢r(shí)間。如果未提供 secs 或?yàn)?None ,則使用由 time() 返回的當(dāng)前時(shí)間。當(dāng) DST 適用于給定時(shí)間時(shí),dst標(biāo)志設(shè)置為 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() 的反函數(shù)。它的參數(shù)是 struct_time 或者完整的 9 元組(因?yàn)樾枰?dst 標(biāo)志;如果它是未知的則使用 -1 作為dst標(biāo)志),它表示 local 的時(shí)間,而不是 UTC 。它返回一個(gè)浮點(diǎn)數(shù),以便與 time() 兼容。如果輸入值不能表示為有效時(shí)間,則 OverflowErrorValueError 將被引發(fā)(這取決于Python或底層C庫(kù)是否捕獲到無效值)。它可以生成時(shí)間的最早日期取決于平臺(tái)。

time.monotonic() float?

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

使用 monotonic_ns() 以避免 float 類型導(dǎo)致的精度損失。

3.3 新版功能.

在 3.5 版更改: 該功能現(xiàn)在始終可用且始終在系統(tǒng)范圍內(nèi)。

在 3.10 版更改: 在 macOS 上,現(xiàn)在這個(gè)函數(shù)作用于全系統(tǒng)。

time.monotonic_ns() int?

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

3.7 新版功能.

time.perf_counter() float?

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

使用 perf_counter_ns() 以避免 float 類型導(dǎo)致的精度損失。

3.3 新版功能.

在 3.10 版更改: 在 Windows 上,現(xiàn)在這個(gè)函數(shù)作用于全系統(tǒng)。

time.perf_counter_ns() int?

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

3.7 新版功能.

time.process_time() float?

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

使用 process_time_ns() 以避免 float 類型導(dǎo)致的精度損失。

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 版更改: 現(xiàn)在,即使該睡眠過程被信號(hào)中斷,該函數(shù)也會(huì)保證調(diào)用它的線程至少會(huì)睡眠 secs 秒。信號(hào)處理例程拋出異常的情況除外。(欲了解我們做出這次改變的原因,請(qǐng)參見 PEP 475

time.strftime(format[, t])?

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

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

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

指令

含意

備注

%a

本地化的縮寫星期中每日的名稱。

%A

本地化的星期中每日的完整名稱。

%b

本地化的月縮寫名稱。

%B

本地化的月完整名稱。

%c

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

%d

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

%H

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

%I

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

%j

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

%m

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

%M

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

%p

本地化的 AM 或 PM 。

(1)

%S

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

(2)

%U

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

(3)

%w

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

%W

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

(3)

%x

本地化的適當(dāng)日期表示。

%X

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

%y

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

%Y

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

%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

%%

字面的 '%' 字符。

注釋:

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

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

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

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'

某些平臺(tái)可能支持其他指令,但只有此處列出的指令具有 ANSI C 標(biāo)準(zhǔn)化的含義。要查看平臺(tái)支持的完整格式代碼集,請(qǐng)參閱 strftime(3) 文檔。

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

time.strptime(string[, format])?

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

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

僅支持文檔中指定的指令。因?yàn)槊總€(gè)平臺(tái)都實(shí)現(xiàn)了 strftime() ,它有時(shí)會(huì)提供比列出的指令更多的指令。但是 strptime() 獨(dú)立于任何平臺(tái),因此不一定支持所有未記錄為支持的可用指令。

class time.struct_time?

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

索引

屬性

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;如下所示

N/A

tm_zone

時(shí)區(qū)名稱的縮寫

N/A

tm_gmtoff

以秒為單位的UTC以東偏離

請(qǐng)注意,與C結(jié)構(gòu)不同,月份值是 [1,12] 的范圍,而不是 [0,11] 。

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

當(dāng)一個(gè)長(zhǎng)度不正確的元組被傳遞給期望 struct_time 的函數(shù),或者具有錯(cuò)誤類型的元素時(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.

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

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

使用 time_ns() 以避免 float 類型導(dǎo)致的精度損失。

time.time_ns() int?

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

3.7 新版功能.

time.thread_time() float?

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

使用 thread_time_ns() 以避免 float 類型導(dǎo)致的精度損失。

可用性 : Windows、 Linux、 Unix 系統(tǒng)支持 CLOCK_THREAD_CPUTIME_ID 。

3.7 新版功能.

time.thread_time_ns() int?

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

3.7 新版功能.

time.tzset()?

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

可用性: Unix。

備注

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

TZ 不應(yīng)該包含空格。

TZ 環(huán)境變量的標(biāo)準(zhǔn)格式是(為了清晰起見,添加了空格):

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

組件的位置是:

stddst

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

offset

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

start[/time], end[/time]

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

Jn

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

n

從零開始的Julian日(0 <= n <= 365)。 閏日計(jì)入,可以引用2月29日。

Mm.n.d

一年中 m 月的第 n 周(1 <= n <= 5 ,1 <= m <= 12 ,第 5 周表示 “可能在 m 月第 4 周或第 5 周出現(xiàn)的最后第 d 日”)的第 d 天(0 <= d <= 6)。 第 1 周是第 d 天發(fā)生的第一周。 第 0 天是星期天。

time 的格式與 offset 的格式相同,但不允許使用前導(dǎo)符號(hào)( '-' 或 '+' )。如果沒有給出時(shí)間,則默認(rèn)值為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系統(tǒng)(包括 *BSD , Linux , Solaris 和 Darwin 上),使用系統(tǒng)的區(qū)域信息( tzfile(5) )數(shù)據(jù)庫(kù)來指定時(shí)區(qū)規(guī)則會(huì)更方便。為此,將 TZ 環(huán)境變量設(shè)置為所需時(shí)區(qū)數(shù)據(jù)文件的路徑,相對(duì)于系統(tǒng) 'zoneinfo' 時(shí)區(qū)數(shù)據(jù)庫(kù)的根目錄,通常位于 /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() 的參數(shù)。

time.CLOCK_BOOTTIME?

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

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

可用性: Linux 2.6.39 或更新

3.7 新版功能.

time.CLOCK_HIGHRES?

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

可用性: Solaris.

3.3 新版功能.

time.CLOCK_MONOTONIC?

無法設(shè)置的時(shí)鐘,表示自某些未指定的起點(diǎn)以來的單調(diào)時(shí)間。

可用性: Unix。

3.3 新版功能.

time.CLOCK_MONOTONIC_RAW?

類似于 CLOCK_MONOTONIC ,但可以訪問不受NTP調(diào)整影響的原始硬件時(shí)間。

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

3.3 新版功能.

time.CLOCK_PROCESS_CPUTIME_ID?

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

可用性: Unix。

3.3 新版功能.

time.CLOCK_PROF?

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

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

3.7 新版功能.

time.CLOCK_TAI?

國(guó)際原子時(shí)間

該系統(tǒng)必須有一個(gè)當(dāng)前閏秒表以便能給出正確的回答。 PTP 或 NTP 軟件可以用來維護(hù)閏秒表。

可用性: Linux。

3.9 新版功能.

time.CLOCK_THREAD_CPUTIME_ID?

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

可用性: Unix。

3.3 新版功能.

time.CLOCK_UPTIME?

該時(shí)間的絕對(duì)值是系統(tǒng)運(yùn)行且未暫停的時(shí)間,提供準(zhǔn)確的正常運(yùn)行時(shí)間測(cè)量,包括絕對(duì)值和間隔值。

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

3.7 新版功能.

time.CLOCK_UPTIME_RAW?

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

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

3.8 新版功能.

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

time.CLOCK_REALTIME?

系統(tǒng)范圍的實(shí)時(shí)時(shí)鐘。 設(shè)置此時(shí)鐘需要適當(dāng)?shù)臋?quán)限。

可用性: Unix。

3.3 新版功能.

時(shí)區(qū)常量?

time.altzone?

本地DST時(shí)區(qū)的偏移量,以UTC為單位的秒數(shù),如果已定義。如果當(dāng)?shù)谼ST時(shí)區(qū)在UTC以東(如在西歐,包括英國(guó)),則是負(fù)數(shù)。 只有當(dāng) daylight 非零時(shí)才使用它。 見下面的注釋。

time.daylight?

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

time.timezone?

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

time.tzname?

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

備注

對(duì)于上述時(shí)區(qū)常量( altzonedaylight 、 timezonetzname ),該值由模塊加載時(shí)有效的時(shí)區(qū)規(guī)則確定,或者最后一次 tzset() 被調(diào)用時(shí),并且在過去的時(shí)間可能不正確。建議使用來自 localtime() 結(jié)果的 tm_gmtofftm_zone 來獲取時(shí)區(qū)信息。

參見

模塊 datetime

更多面向?qū)ο蟮娜掌诤蜁r(shí)間接口。

模塊 locale

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

模塊 calendar

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

備注

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.