time模塊
這個模塊提供各種與時間相關的函數。相關功能,可以參見datetime和calendat模塊。
此模塊並非所有平台提供所有功能,因平台而異
以下是對一些術語和慣例的解釋
- 初始時間因平台而異。對於Unix平台,初始時間是1970,01,01,00:00:00(UTC)。查看每個操作平台的初始時間可以使用time.gmtime(0)函數。
- 在所有POSIX平台上,從初始時間以來的秒數都不包括閏秒
- 該模塊中的函數可能不處理初始時間以前和遙遠未來的日期和時間,未來的分界點對於32位操作系統是2038年。
- UTC是協調世界時(以前稱為格林尼治標准時間,GMT)。縮寫UTC不是一個錯誤,而是英語和法語之間的妥協。
- DST是夏令時,在一年中的某些時候,時區通常會調整一個小時。DST規則是神奇的(由當地法律決定),每年都在變化。
- 各種實時函數的精度可能低於表示其值或參數的單位所建議的精度。
時間類型的格式
struct_time類型
它是一個具有命名元組接口的對象:可以通過索引和屬性名訪問值。存在以下值:
- index---attribute---values
- 0---tm_year---年份
- 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]
- 6---tm_wday---星期range[0,6],0是星期日
- 7---tm_yday---一年中的一天range[1,366]
- 8---tm_isdst---tm_isdst可以在夏令時生效時設置為1,而在夏令時不生效時設置為0。值-1表示這是未知的。
- N/A---tm_zone---時區名稱的縮寫
- N/A---tm_gmtoff---協調世界時以東偏移,以秒為單位.
例如,time.struct_time(tm_year=2019, tm_mon=3, tm_mday=20, tm_hour=23, tm_min=11, tm_sec=33, tm_wday=2, tm_yday=79, tm_isdst=0)
格式化時間類型
例如,'Wed Mar 20 23:12:26 2019'
時間戳類型
從初始時間到指定時間的秒數。
例如,time.time()得到的float類型的秒數,
時間類型之間的相互轉換

函數
time.asctime([t])
作用:將struct_time類型的時間轉換為如下形式:'Sun Jun 20 23:21:05 1993'
參數:struct_time類型或tuple類型的時間,不填參數的話默認為time.localtime()得到的時間。
返回值:'Sun Jun 20 23:21:05 1993'類型的時間。
time.pthread_getcpuclockid(thread_id)
作用:返回指定線程id的線程特定CPU時間時鍾的clk_id。
參數:線程的id,可以使用threading.get_ident()或線程的ident屬性得到線程id。
返回值:clk_id
注意:只有Unix可用
time.clock_getres(clk_id)-->float
作用:返回指定時鍾clk_id的分辨率(精度)。有關clk_id的可接受值列表,請參考時鍾ID常量。
注意:只用Unix可用
time.clock_gettime_ns(clk_id)-->int
作用:與clock_gettime()類似,但是返回的時間是納秒。
注意:只用Unix可用
time.clock_settime(clk_id,time:float)
作用:設置指定時鍾clk_id的時間。目前,CLOCK_REALTIME是clk_id惟一接受的值。
注意:只用Unix可用
time.clock_settime_ns(clk_id,time:int)
作用:與clock_settime()類似,但是使用納秒設置時間。
注意:只用Unix可用
time.ctime([secs])
作用:將時間戳的時間轉換為表示本地時間的字符串。如果沒有提供secs或沒有提供secs,則使用time()返回的當前時間。
參數:時間戳類型的時間,如果不填默認為當前時間的時間戳。
返回值:格式化類型的時間,例如'Mon Mar 18 23:56:35 2019'。
time.get_clock_info(name)
作用:以命名空間對象的形式獲取指定時鍾的信息。
參數:
- 'clock':time.clock()
- 'monotonic':time.monotonic()
- 'perf_counter':time.perf_counter()
- 'process_time':time.process_time()
- 'tread_time':time.tread_time()
- 'time':time.time()
返回值:
- adjustable:如果時鍾可以自動更改(例如由NTP守護進程)或由系統管理員手動更改,則為True,否則為False。
- implementation:用於獲取時鍾值的底層C函數的名稱。有關可能的值,請參考時鍾ID常量。
- monotonic:如果時鍾不能倒轉,則為真,反之為假。
- resolution:時鍾的分辨率(以秒為單位)(浮點數)。
- 例如,namespace(adjustable=False, implementation='QueryPerformanceCounter()', monotonic=True, resolution=3.775811922277177e-07)
time.gmtime([sec])
作用:將時間戳類型的時間轉換為UTC中的struct_time,其中dst標志始終為零。
參數:時間戳類型的時間,如果沒有提供secs或沒有提供secs,則使用time()返回的當前時間。
返回值:struct_time類型的時間
time.localtime([sec])
作用:就像time.gmtime(),但是轉換為本地時間。當dst應用於給定的時間時,dst標志被設置為1。
參數:時間戳類型的時間,如果沒有提供secs或沒有提供secs,則使用time()返回的當前時間。
返回值:struct_time類型的時間
time.mktime(t)
作用:將struct_time類型的時間轉換為時間戳類型。
參數:struct_time類型的時間。
返回值:時間戳類型。
time.monotonic()-->float
作用:返回一個單調時鍾的值(以分數秒為單位),即一個不能倒退的時鍾。時鍾不受系統時鍾更新的影響。返回值的引用點是未定義的,因此只有連續調用的結果之間的差異是有效的。
time.monotonic_ns()-->int
作用:和time.monotonic()類似,但返回值為納秒。
time.perf_counter()-->float
作用:返回性能計數器的值(以小數秒為單位),即具有最高可用分辨率來測量短時間的時鍾。它確實包括在睡眠期間所花費的時間,並且是全系統的。返回值的引用點是未定義的,因此只有連續調用的結果之間的差異是有效的。
time.perf_counter_ns()-->int
作用:和time.perf_counter()類似,但返回值為納秒。
time.process_time()-->float
作用:返回當前進程的系統和用戶CPU時間之和(以小數秒為單位)。它不包括睡眠時間。根據定義,它是過程范圍的。返回值的引用點是未定義的,因此只有連續調用的結果之間的差異是有效的。
time.process_time_ns()-->int
作用:和time.process_time()類似,但返回值為納秒。
time.sleep(secs)
作用:在給定的秒數內掛起調用線程的執行。
參數:秒數,參數可以是一個浮點數,表示更精確的睡眠時間。
time.strftime(format[,t])
作用:將struct_time類型的時間轉換為format參數指定格式的字符串。
參數:
- format:指定轉換時間的字符串格式。
- t:struct_time類型的時間,如果不填默認為當前時間(即time.localtime()返回的時間)
返回值:指定格式的字符串。
注:
以下指令可以嵌入格式字符串中。它們顯示時沒有可選的字段寬度和精度規范。
- %a-->星期的縮寫
- %A-->完整的星期的名稱
- %b-->月份的縮寫
- %B-->完整的月份名稱
- %c-->'Wed Mar 20 21:40:19 2019'格式
- %d-->十進制數格式的日期[01,31]
- %H-->小時(24小時制) 十進制數[00,23]
- %I-->小時(12小時制) 十進制數[01,12]
- %j-->一年中的一天(十進制數)[001,366]
- %m-->月份(十進制數)[01,12]
- %M-->分鍾數(十進制數)[00,59]
- %p-->AM或PM
- %S-->秒數[00,59]
- %U-->一年中的周數(星期日作為一周的第一天)十進制數[00,53],第一個星期日之前的所有日子被認為是第0周。
- %w-->星期數(十進制數)[0,6]
- %W-->一年中的周數(星期一作為一周的第一天)十進制數[00,53],第一個星期一之前的所有日子被認為是第0周。
- %x-->日期表示(月/日/不帶世紀的年份)例如'03/20/19'
- %X-->時間表示(時:分:秒)例如'21:56:34'
- %y-->不帶世紀的年份(十進制數)[00,99]
- %Y-->帶世紀的年份(十進制數)
- %z-->時區偏移指示與格式+ HHMM或-HHMM形式的UTC / GMT的正或負時差,其中H表示十進制小時數字,M表示小數分鍾數字[-23:59,+ 23:59]。
- %Z-->時區名稱,例如'中國標准時間'
- %%-->'%'字符。
time.strptime(string[,format])
作用:根據格式解析表示時間的字符串。
參數:
- string:字符串類型的時間。
- format:提供字符串類型的時間的格式。
返回值:struct_time類型的時間。
注:ormat參數使用的指令與strftime()使用的指令相同;它默認為“%a %b %d %H:%M:%S %Y”,與ctime()返回的格式匹配。如果字符串不能按照格式進行解析,或者解析后有多余的數據,則會引發ValueError。當無法推斷出更精確的值時,用於填充任何缺失數據的默認值是(1900、1、1、0、0、0、0、0、1、-1)。字符串和格式都必須是字符串。
time.time()-->float
作用:以秒為單位以浮點數返回歷元之后的時間。
time.thread_time()-->float
作用:返回當前線程的系統和用戶CPU時間之和(以小數秒為單位)。它不包括睡眠時間。它的定義是特定於線程的。返回值的引用點未定義,因此只有同一線程中連續調用的結果之間的差異是有效的。
time.thread_time_ns()-->int
作用:和time.thread_time()類似,但是返回值是納秒。
time.time_ns()-->int
作用:和time.time()類似,但返回值是納秒。
