time --- 時(shí)間的訪問(wèn)和轉(zhuǎn)換?
該模塊提供了各種時(shí)間相關(guān)的函數(shù)。相關(guān)功能還可以參閱 datetime 和 calendar 模塊。
盡管此模塊始終可用,但并非所有平臺(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í)間 (使用Unixgettimeofday()如果可用),并且sleep()將接受非零分?jǐn)?shù)的時(shí)間(Unixselect()用于實(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_gmtoff和tm_zone屬性。在 3.6 版更改:
struct_time的屬性tm_gmtoff和tm_zone現(xiàn)在可在所有平臺(tái)上使用。使用以下函數(shù)在時(shí)間表示之間進(jìn)行轉(zhuǎn)換:
從
到
使用
seconds since the epoch
UTC 的
struct_timeseconds since the epoch
本地時(shí)間的
struct_timeUTC 的
struct_timeseconds since the epoch
本地時(shí)間的
struct_timeseconds since the epoch
函數(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_REALTIME是 clk_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ù)是:
'clock':time.clock()'monotonic':time.monotonic()'perf_counter':time.perf_counter()'process_time':time.process_time()'thread_time':time.thread_time()'time':time.time()
結(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í)間,則OverflowError或ValueError將被引發(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ū),則不包含字符)。
%%字面的
'%'字符。注釋:
當(dāng)與
strptime()函數(shù)一起使用時(shí),如果使用%I指令來(lái)解析小時(shí),%p指令只影響輸出小時(shí)字段。范圍真的是
0到61;值60在表示 leap seconds 的時(shí)間戳中有效,并且由于歷史原因支持值61。當(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)。 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是否為真。因此,它是特定于平臺(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_monrange [1, 12]
2
tm_mdayrange [1, 31]
3
tm_hourrange [0, 23]
4
tm_minrange [0, 59]
5
tm_secrange [0, 61]; 見(jiàn)
strftime()介紹中的 (2)6
tm_wdayrange [0, 6] ,周一為 0
7
tm_ydayrange [1, 366]
8
tm_isdst0, 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]]]]
組件的位置是:
std和dst三個(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é)束日期的格式為以下之一:
JnJulian日 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_PROF? 來(lái)自CPU的高分辨率每進(jìn)程計(jì)時(shí)器。
可用性: FreeBSD, NetBSD 7 或更新, OpenBSD.
3.7 新版功能.
-
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ù)。
時(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ū)常量( altzone 、 daylight 、 timezone 和 tzname ),該值由模塊加載時(shí)有效的時(shí)區(qū)規(guī)則確定,或者最后一次 tzset() 被調(diào)用時(shí),并且在過(guò)去的時(shí)間可能不正確。建議使用來(lái)自 localtime() 結(jié)果的 tm_gmtoff 和 tm_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ù)。
備注
