time模塊
這個模塊提供各類與時間相關的函數。相關功能,能夠參見datetime和calendat模塊。
此模塊並不是全部平臺提供全部功能,因平臺而異
如下是對一些術語和慣例的解釋tcp
- 初始時間因平臺而異。對於Unix平臺,初始時間是1970,01,01,00:00:00(UTC)。查看每一個操做平臺的初始時間可使用time.gmtime(0)函數。
- 在全部POSIX平臺上,從初始時間以來的秒數都不包括閏秒
- 該模塊中的函數可能不處理初始時間之前和遙遠將來的日期和時間,將來的分界點對於32位操做系統是2038年。
- UTC是協調世界時(之前稱爲格林尼治標準時間,GMT)。縮寫UTC不是一個錯誤,而是英語和法語之間的妥協。
- DST是夏令時,在一年中的某些時候,時區一般會調整一個小時。DST規則是神奇的(由當地法律決定),每一年都在變化。
- 各類實時函數的精度可能低於表示其值或參數的單位所建議的精度。
###時間類型的格式
####struct_time類型
它是一個具備命名元組接口的對象:能夠經過索引和屬性名訪問值。存在如下值:ide
- 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類型的秒數,spa
###時間類型之間的相互轉換
操作系統
##函數
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可用orm
time.clock_getres(clk_id)-->float
**做用:**返回指定時鐘clk_id的分辨率(精度)。有關clk_id的可接受值列表,請參考時鐘ID常量。
**注意:**只用Unix可用對象
time.clock_gettime_ns(clk_id)-->int
**做用:**與clock_gettime()相似,可是返回的時間是納秒。
**注意:**只用Unix可用blog
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、一、一、0、0、0、0、0、一、-1)。字符串和格式都必須是字符串。
time.time()-->float
**做用:**以秒爲單位以浮點數返回曆元以後的時間。
time.thread_time()-->float
**做用:**返回當前線程的系統和用戶CPU時間之和(以小數秒爲單位)。它不包括睡眠時間。它的定義是特定於線程的。返回值的引用點未定義,所以只有同一線程中連續調用的結果之間的差別是有效的。
time.thread_time_ns()-->int
**做用:**和time.thread_time()相似,可是返回值是納秒。
time.time_ns()-->int **做用:**和time.time()相似,但返回值是納秒。