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


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

盡管此模塊始終可用,但并非所有平臺(tái)上都提供所有功能。 此模塊中定義的大多數(shù)函數(shù)是調(diào)用了所在平臺(tái) C 語(yǔ)言庫(kù)的同名函數(shù)。 因?yàn)檫@些函數(shù)的語(yǔ)義因平臺(tái)而異,所以使用時(shí)最好查閱平臺(tái)相關(guān)文檔。

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

  • epoch 是時(shí)間開(kāi)始的點(diǎn),并且取決于平臺(tái)。對(duì)于Unix, epoch 是1970年1月1日00:00:00(UTC)。要找出給定平臺(tái)上的 epoch ,請(qǐng)查看 time.gmtime(0)

  • 術(shù)語(yǔ) Unix 紀(jì)元秒數(shù) 是指自國(guó)際標(biāo)準(zhǔn)時(shí)間 1970 年 1 月 1 日零時(shí)以來(lái)經(jīng)過(guò)的總秒數(shù),通常不包括 閏秒。 在所有符合 POSIX 標(biāo)準(zhǔn)的平臺(tái)上,閏秒都會(huì)從總秒數(shù)中被扣除。

  • 此模塊中的功能可能無(wú)法處理紀(jì)元之前或?qū)?lái)的遠(yuǎn)期日期和時(shí)間。未來(lái)的截止點(diǎn)由C庫(kù)決定;對(duì)于32位系統(tǒng),它通常在2038年。

  • 函數(shù) strptime() 在接收到 %y 格式代碼時(shí)可以解析 2 位數(shù)的年份。 當(dāng)解析 2 位數(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í)(以前稱為格林威治標(biāo)準(zhǔn)時(shí)間,或GMT)。縮寫(xiě)UTC不是錯(cuò)誤,而是英語(yǔ)和法語(yǔ)之間的妥協(xié)。

  • DST是夏令時(shí),在一年中的一部分時(shí)間(通常)調(diào)整時(shí)區(qū)一小時(shí)。 DST規(guī)則很神奇(由當(dāng)?shù)胤纱_定),并且每年都會(huì)發(fā)生變化。 C 庫(kù)有一個(gè)包含本地規(guī)則的表(通常是從系統(tǒng)文件中讀取以獲得靈活性),并且在這方面是True Wisdom的唯一來(lái)源。

  • 各種實(shí)時(shí)函數(shù)的精度可能低于表示其值或參數(shù)的單位所建議的精度。例如,在大多數(shù)Unix系統(tǒng)上,時(shí)鐘 "ticks" 僅為每秒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)換:

    使用

    seconds since the epoch

    UTC 的 struct_time

    gmtime()

    seconds since the epoch

    本地時(shí)間的 struct_time

    localtime()

    UTC 的 struct_time

    seconds since the epoch

    calendar.timegm()

    本地時(shí)間的 struct_time

    seconds since the epoch

    mktime()

函數(shù)?

time.asctime([t])?

轉(zhuǎn)換一個(gè)元組或 struct_time 表示的時(shí)間,由 gmtime()localtime() 返回為以下形式的字符串: 'Sun Jun 20 23:21:05 1993' 。如果未提供 t ,則使用由 localtime() 返回的當(dāng)前時(shí)間。 區(qū)域信息不被函數(shù) asctime() 使用。

注解

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

time.clock()?

在Unix上,將當(dāng)前處理器時(shí)間返回為以秒為單位的浮點(diǎn)數(shù)。精確度,實(shí)際上是“處理器時(shí)間”含義的定義,取決于同名C函數(shù)的精度。

在Windows上,此函數(shù)返回自第一次調(diào)用此函數(shù)以來(lái)經(jīng)過(guò)的 wallclock 秒數(shù),作為浮點(diǎn)數(shù),基于Win32函數(shù) QueryPerformanceCounter()。分辨率通常優(yōu)于1微秒。

Deprecated since version 3.3, will be removed in version 3.8: 此函數(shù)的行為取決于平臺(tái):根據(jù)你的需求,使用 perf_counter()process_time() 獲得具有明確定義的行為。

time.pthread_getcpuclockid(thread_id)?

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

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

警告

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

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

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 常量

可用性: 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 唯一可接受的值。

可用性: Unix。

3.3 新版功能.

time.clock_settime_ns(clk_id, time: int)?

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

可用性: Unix。

3.7 新版功能.

time.ctime([secs])?

將以自 epoch 開(kāi)始的秒數(shù)表示的時(shí)間轉(zhuǎn)換為表示本地時(shí)間的字符串。 如果未提供 secs 或?yàn)?None,則使用 time() 所返回的當(dāng)前時(shí)間。 ctime(secs) 相當(dāng)于 asctime(localtime(secs))。 區(qū)域信息不會(huì)被 ctime() 使用。

time.get_clock_info(name)?

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

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

  • adjustable : 如果時(shí)鐘可以自動(dòng)更改(例如通過(guò)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])?

將以自 epoch 開(kāi)始的秒數(shù)表示的時(shí)間轉(zhuǎn)換為 UTC 的 struct_time ,其中 dst 標(biāo)志始終為零。 如果未提供 secs 或?yàn)?None ,則使用 time() 所返回的當(dāng)前時(shí)間。 一秒以內(nèi)的小數(shù)將被忽略。 有關(guān) struct_time 對(duì)象的說(shuō)明請(qǐng)參見(jiàn)上文。 有關(guān)此函數(shù)的逆操作請(qǐng)參閱 calendar.timegm()。

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 。

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ù)是否捕獲到無(wú)效值)。它可以生成時(shí)間的最早日期取決于平臺(tái)。

time.monotonic() → float?

返回單調(diào)時(shí)鐘的值(以小數(shù)秒為單位),即不能倒退的時(shí)鐘。時(shí)鐘不受系統(tǒng)時(shí)鐘更新的影響。返回值的參考點(diǎn)未定義,因此只有連續(xù)調(diào)用結(jié)果之間的差異才有效。

3.3 新版功能.

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

time.monotonic_ns() → int?

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

3.7 新版功能.

time.perf_counter() → float?

返回性能計(jì)數(shù)器的值(以小數(shù)秒為單位),即具有最高可用分辨率的時(shí)鐘,以測(cè)量短持續(xù)時(shí)間。它確實(shí)包括睡眠期間經(jīng)過(guò)的時(shí)間,并且是系統(tǒng)范圍的。返回值的參考點(diǎn)未定義,因此只有連續(xù)調(diào)用結(jié)果之間的差異才有效。

3.3 新版功能.

time.perf_counter_ns() → int?

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

3.7 新版功能.

time.process_time() → float?

返回當(dāng)前進(jìn)程的系統(tǒng)和用戶CPU時(shí)間總和的值(以小數(shù)秒為單位)。它不包括睡眠期間經(jīng)過(guò)的時(shí)間。根據(jù)定義,它在整個(gè)進(jìn)程范圍中。返回值的參考點(diǎn)未定義,因此只有連續(xù)調(diào)用結(jié)果之間的差異才有效。

3.3 新版功能.

time.process_time_ns() → int?

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

3.7 新版功能.

time.sleep(secs)?

暫停執(zhí)行調(diào)用線程達(dá)到給定的秒數(shù)。參數(shù)可以是浮點(diǎn)數(shù),以指示更精確的睡眠時(shí)間。實(shí)際的暫停時(shí)間可能小于請(qǐng)求的時(shí)間,因?yàn)槿魏尾东@的信號(hào)將在執(zhí)行該信號(hào)的捕獲例程后終止 sleep() 。此外,由于系統(tǒng)中其他活動(dòng)的安排,暫停時(shí)間可能比請(qǐng)求的時(shí)間長(zhǎng)任意量。

在 3.5 版更改: 即使睡眠被信號(hào)中斷,該函數(shù)現(xiàn)在至少睡眠 secs ,除非信號(hào)處理程序引發(fā)異常(參見(jiàn) 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í)沒(méi)有可選的字段寬度和精度規(guī)范,并被 strftime() 結(jié)果中的指示字符替換:

指令

含義

注釋

%a

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

%A

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

%b

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

%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] 表示的沒(méi)有世紀(jì)的年份。

%Y

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

%z

時(shí)區(qū)偏移以格式 +HHMM 或 -HHMM 形式的 UTC/GMT 的正或負(fù)時(shí)差指示,其中H表示十進(jìn)制小時(shí)數(shù)字,M表示小數(shù)分鐘數(shù)字 [-23:59, +23:59] 。

%Z

時(shí)區(qū)名稱(如果不存在時(shí)區(qū),則不包含字符)。

%%

字面的 '%' 字符。

注釋:

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

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

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

下面是一個(gè)示例,一個(gè)與 RFC 2822 Internet電子郵件標(biāo)準(zhǔn)以兼容的日期格式。 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 來(lái)解析,或者解析后它有多余的數(shù)據(jù),則會(huì)引發(fā) ValueError。 當(dāng)無(wú)法推斷出更準(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ì)象:可以通過(guò)索引和屬性名訪問(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í)區(qū)名稱的縮寫(xiě)

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)致填寫(xiě)正確的狀態(tài)。

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

time.time() → float?

返回以浮點(diǎn)數(shù)表示的從 epoch 開(kāi)始的秒數(shù)的時(shí)間值。 epoch 的具體日期和 leap seconds 的處理取決于平臺(tái)。 在 Windows 和大多數(shù) Unix 系統(tǒng)中, epoch 是 1970 年 1 月 1 日 00:00:00 (UTC),并且閏秒將不計(jì)入從 epoch 開(kāi)始的秒數(shù)。 這通常被稱為 Unix 時(shí)間。 要了解給定平臺(tái)上 epoch 的具體定義,請(qǐng)查看 gmtime(0)。

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

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

time.thread_time() → float?

返回當(dāng)前線程的系統(tǒng)和用戶CPU時(shí)間之和的值(以小數(shù)秒為單位)。它不包括睡眠期間經(jīng)過(guò)的時(shí)間。根據(jù)定義,它是特定于線程的。返回值的參考點(diǎn)未定義,因此只有同一線程中連續(xù)調(diào)用結(jié)果之間的差異才有效。

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

3.7 新版功能.

time.thread_time_ns() → int?

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

3.7 新版功能.

time.time_ns() → int?

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

3.7 新版功能.

time.tzset()?

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

可用性: Unix。

注解

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

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

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

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

組件的位置是:

stddst

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

offset

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

start[/time], end[/time]

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

Jn

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

n

從零開(kāi)始的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)( '-' 或 '+' )。如果沒(méi)有給出時(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ù)來(lái)指定時(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?

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

可用性: Unix。

3.3 新版功能.

time.CLOCK_MONOTONIC_RAW?

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

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

3.3 新版功能.

time.CLOCK_PROCESS_CPUTIME_ID?

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

可用性: Unix。

3.3 新版功能.

time.CLOCK_PROF?

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

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

3.7 新版功能.

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 新版功能.

以下常量是唯一可以發(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í)才使用它。 見(jiàn)下面的注釋。

time.daylight?

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

time.timezone?

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

time.tzname?

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

注解

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

參見(jiàn)

模塊 datetime

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

模塊 locale

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

模塊 calendar

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

備注

1

現(xiàn)在不推薦使用 %Z ,但是所有 ANSI C 庫(kù)都不支持?jǐn)U展為首選小時(shí)/分鐘偏移量的``%z``轉(zhuǎn)義符。 此外,嚴(yán)格的 1982 年原始 RFC 822 標(biāo)準(zhǔn)要求兩位數(shù)的年份(%y而不是%Y),但是實(shí)際在2000年之前很久就轉(zhuǎn)移到了4位數(shù)年。之后, RFC 822 已經(jīng)廢棄了,4位數(shù)的年份首先被推薦 RFC 1123 ,然后被 RFC 2822 強(qiáng)制執(zhí)行。