Python標準庫--time模塊的詳解

time模塊 - - -時間獲取和轉換python


在咱們學習time模塊以前須要對如下的概念進行了解;框架

時間戳:時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至如今的總秒數.函數

UTC(Coordinated Universal Time,世界協調時):協調世界時,又稱世界統一時間、世界標準時間、國際協調時間,在我國爲UTC+8。學習

DST(Daylight Saving Time):夏令時spa

  1986年4月,中國中央有關部門發出「在全國範圍內實行夏時制的通知」,具體做法是:每一年從四月中旬第一個星期日的凌晨2時整(北京時間),將時鐘撥快一小時,即將錶針由2時撥至3時,夏令時開始;到九月中旬第一個星期日的凌晨2時整(北京夏令時),再將時鐘撥回一小時,即將錶針由2時撥至1時,夏令時結束。線程

結構化時間:code

  • time.localtime()        
  • time.gmtime()世界標準時間(格林尼治時間) 

結構化時間轉成時間戳:time.mktime(time.localtime())orm

結構化時間轉成字符串時間:time.strftime('%Y-%m-%d %X',time.localtime())對象

字符串時間轉成結構化時間:time.strptime('2017:05:07:19:47:36','%Y-%m-%d %X')blog

時間元組(struct_time) :struct_time元組共有9個元素共九個元素:(年,月,日,時,分,秒,一年中第幾周,一年中第幾天,夏令時)

 
索引值 屬性
0 tm_year(年) (例如:2018)
1 tm_mon(月) 1-12
2 tm_mday(日) 1-31
3 tm_hour(時) 0-23
4 tm_min(分) 0-59
5 tm_sec(秒) 0-61(60表明閏秒,61是基於歷史緣由保留)
6 tm_wday(星期幾) 0-6(0表示星期一)
7 tm_yday(一年中的第幾天) 1-366
8 tm_isdst(是否爲夏令時) 0,1,-1(-1表明夏令時)

 

 

 time.time()-->float


 

說明:

  返回當前時間的時間戳(1970元年後的浮點秒數)

 實例

In [1]: import time

In [2]: time.time()
Out[2]: 1533177066.8094957

 

 

time.sleep(secs)


 

說明:

  推遲調用線程的運行,secs的單位是秒

實例:

import time 

start_time = time.time()
time.sleep(5)
end_time = time.time()
print(start_time-end_time) # -5.000396013259888

 

 

time.gmtime([secs])


 

說明

  和localtime()方法相似,gmtime()方法是將一個時間戳轉換爲UTC時區(0時區)的struct_time。

In [14]: time.gmtime()
Out[14]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=2, tm_hour=3, tm_min=18, tm_sec=52, tm_wday=3, tm_yday=214, tm_isdst=0)

 默認調用time.time()

In [32]: time.gmtime()
Out[32]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=3, tm_hour=4, tm_min=37, tm_sec=24, tm_wday=4, tm_yday=215, tm_isdst=0)

In [33]: time.gmtime(33)
Out[33]: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=33, tm_wday=3, tm_yday=1, tm_isdst=0)

In [34]: time.gmtime(time.time())
Out[34]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=3, tm_hour=4, tm_min=37, tm_sec=44, tm_wday=4, tm_yday=215, tm_isdst=0)

 

 

time.localtime([secs])   


 

說明:

  將一個時間戳轉換爲當前時區的struct_time。secs參數未提供,則以當前時間爲準。

實例:

In [16]: time.localtime()
Out[16]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=2, tm_hour=11, tm_min=20, tm_sec=6, tm_wday=3, tm_yday=214, tm_isdst=0)

 默認調用time.time()

In [29]: time.localtime(55)
Out[29]: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=55, tm_wday=3, tm_yday=1, tm_isdst=0)

In [30]: time.time()# 當前時間戳
Out[30]: 1533270573.173084

In [31]: time.localtime(time.time())
Out[31]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=3, tm_hour=12, tm_min=29, tm_sec=43, tm_wday=4, tm_yday=215, tm_isdst=0)

 

 

time.mktime(t)


 

說明:

  將一個struct_time轉化爲時間戳。

In [26]: import time

In [27]: time.localtime()
Out[27]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=3, tm_hour=12, tm_min=22, tm_sec=6, tm_wday=4, tm_yday=215, tm_isdst=0)

In [28]: time.mktime(time.localtime())
Out[28]: 1533270142.0

 

 

time.asctime (t)


 

說明:

  把一個表示時間的元組或者struct_time表示爲這種形式:'Sun Jun 20 23:21:05 1993'。若是沒有參數,將會將time.localtime()做爲參數傳入。

實例:

當沒有參數的時候默認將time.localtime()傳入

In [38]: time.asctime()
Out[38]: 'Fri Aug  3 12:55:58 2018'

In [39]: time.localtime()
Out[39]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=3, tm_hour=12, tm_min=56, tm_sec=4, tm_wday=4, tm_yday=215, tm_isdst=0)

In [40]: time.asctime(time.localtime())
Out[40]: 'Fri Aug  3 12:56:18 2018'

當傳入的參數爲時間元組的時候

In [46]: time.asctime((2018, 8, 3, 12, 57, 19, 134860,0,0)) # 關於時間元組的獲取
Out[46]: 'Sat Aug  3 12:57:19 2018'

 

time.ctime([secs])


 

說明:

  把一個時間戳(按秒計算的浮點數)轉化爲time.asctime()的形式。若是參數未給或者爲None的時候,將會默認time.time()爲參數。它的做用至關於time.asctime(time.localtime(secs))。

實例

In [51]: time.ctime()
Out[51]: 'Fri Aug  3 13:13:55 2018'

In [52]: time.ctime(int(time.time()))
Out[52]: 'Fri Aug  3 13:14:01 2018'

In [53]: time.ctime(time.time()) 
Out[53]: 'Fri Aug  3 13:14:06 2018'

 

 

time.struct_time()


 

說明:

  接收一個時間元組,返回一個struct_time()的對象

實例:

In [59]: time.struct_time((2018, 8, 3, 12, 57, 19, 134860,0,0))
Out[59]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=3, tm_hour=12, tm_min=57, tm_sec=19, tm_wday=134860, tm_yday=0, tm_isdst=0)

 

 

 time.strftime(format [, t])--->返回字符串表示當地的時間


 

 說明:

  返回字符串表示的當地時間。 
  把一個表明時間的元組或者struct_time(如由time.localtime()和time.gmtime()返回)轉化爲格式化的時間字符串,格式由參數format決定。若是未指定,將傳入time.localtime()。若是元組中任何一個元素越界,就會拋出ValueError的異常。函數返回的是一個可讀表示的本地時間的字符串。

參數:

  • format:格式化字符串
  • t :可選的參數是一個struct_time對象

 時間字符串支持的格式符號:(區分大小寫)

 1 %a  本地星期名稱的簡寫(如星期四爲Thu)      
 2 %A  本地星期名稱的全稱(如星期四爲Thursday)      
 3 %b  本地月份名稱的簡寫(如八月份爲agu)    
 4 %B  本地月份名稱的全稱(如八月份爲august)       
 5 %c  本地相應的日期和時間的字符串表示(如:15/08/27 10:20:06 6 %d  一個月中的第幾天(01 - 31 7 %f  微妙(範圍0.999999 8 %H  一天中的第幾個小時(24小時制,00 - 23 9 %I  第幾個小時(12小時制,0 - 1110 %j  一年中的第幾天(001 - 36611 %m  月份(01 - 1212 %M  分鐘數(00 - 5913 %p  本地am或者pm的相應符      
14 %S  秒(00 - 6115 %U  一年中的星期數。(00 - 53星期天是一個星期的開始。)第一個星期天之    前的全部天數都放在第0周。     
16 %w  一個星期中的第幾天(0 - 6,0是星期天)    
17 %W  和%U基本相同,不一樣的是%W以星期一爲一個星期的開始。    
18 %x  本地相應日期字符串(如15/08/0119 %X  本地相應時間字符串(如08:08:1020 %y  去掉世紀的年份(00 - 99)兩個數字表示的年份       
21 %Y  完整的年份(4個數字表示年份)
22 %z  與UTC時間的間隔(若是是本地時間,返回空字符串)
23 %Z  時區的名字(若是是本地時間,返回空字符串)       
24 %%  ‘%’字符

實例:

經過函數將struct_time轉成格式字符串

In [64]: time.localtime()
Out[64]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=3, tm_hour=17, tm_min=6, tm_sec=14, tm_wday=4, tm_yday=215, tm_isdst=0)

In [65]: time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
Out[65]: '2018-08-03 17:06:18'

In [66]: time.strftime("%Y-%m-%d",time.localtime())
Out[66]: '2018-08-03'

若是不傳入struct_time參數則默認返回當前的時間格式化字符串

In [67]: time.strftime("%Y-%m-%d")
Out[67]: '2018-08-03'

手動拼接顯示字符串時間

In [6]: str(time.localtime().tm_year)+""+str(time.localtime().tm_mon)+""+str(time.localtime().tm_mday)+""
Out[6]: '2018年8月3日'

獲取當前的時分秒

In [10]: time.strftime("%H-%M-%S")
Out[10]: '17-24-28'

獲取當前的年月日

In [11]: time.strftime("%y-%m-%d")
Out[11]: '18-08-03'

 獲取當前格式化時間。須要注意的是在python框架中對於時間的字段返回的是datetime.datetime()的時間類型

In [12]: import time

In [13]: from datetime import datetime

In [15]: datetime.now()
Out[15]: datetime.datetime(2018, 8, 3, 22, 45, 34, 453989)

In [16]: datetime_obj = datetime.now()

In [17]: datetime_obj.strftime("%Y-%m-%d %H:%M:%S %f")
Out[17]: '2018-08-03 22:46:06 462418'

星期的簡寫

In [18]: datetime_obj.strftime('%a')
Out[18]: 'Fri'

星期的全寫

In [19]: datetime_obj.strftime('%A')
Out[19]: 'Friday'

月份的簡寫

In [20]: datetime_obj.strftime('%b')
Out[20]: 'Aug'

月份的全寫

In [21]: datetime_obj.strftime('%B')
Out[21]: 'August'

獲得日期時間的字符串

In [22]: datetime_obj.strftime('%c')
Out[22]: 'Fri Aug  3 22:46:06 2018'

日期字符串

In [24]: datetime_obj.strftime('%x')
Out[24]: '08/03/18'

時間字符串

In [25]: datetime_obj.strftime('%X')
Out[25]: '22:46:06'

今天在這周是星期幾

In [26]: datetime_obj.strftime('%w')
Out[26]: '5'

今天是今年的第幾天

In [27]: datetime_obj.strftime('%j')
Out[27]: '215'

這周是第幾天

In [28]: datetime_obj.strftime('%U')
Out[28]: '30'

 

 

time.strptime(string[,format]) 


 

 

說明:

  將格式字符串轉化成struct_time. 
  該函數是time.strftime()函數的逆操做。time strptime() 函數根據指定的格式把一個時間字符串解析爲時間元組。因此函數返回的是struct_time對象。

參數:

  • string :時間字符串
  • format:格式化字符串

建立一個時間字符串的對象

In [12]: import time

In [13]: from datetime import datetime

In [16]: datetime_obj = datetime.now()

In [30]: str_time = datetime_obj.strftime("%Y-%m-%d %H:%M:%S")

In [31]: str_time
Out[31]: '2018-08-03 22:46:06'

將字符串的時間轉換成strcut_time對象

In [30]: str_time = datetime_obj.strftime("%Y-%m-%d %H:%M:%S")

In [31]: str_time
Out[31]: '2018-08-03 22:46:06'

In [32]: struct_obj = time.strptime(str_time,"%Y-%m-%d %H:%M:%S")

In [33]: struct_obj
Out[33]: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=3, tm_hour=22, tm_min=46, tm_sec=6, tm_wday=4, tm_yday=215, tm_isdst=-1)

 對struct_time()使用for循環進行遍歷

In [35]: for t in struct_obj:
   ....:     print(t)
   ....:     
2018
8
3
22
46
6
4
215
-1

注意:注意在使用strptime()函數將一個指定格式的時間字符串轉化成元組時,參數format的格式必須和string的格式保持一致,若是string中日期間使用「-」分隔,format中也必須使用「-」分隔,時間中使用冒號「:」分隔,後面也必須使用冒號分隔,不然會報格式不匹配的錯誤。

 

 

time.altzone 

time.clock   

time.clock_getres  

time.daylight

time.get_clock_info 

time.monotonic 

time.perf_counter  

time.process_time   

time.timezone

time.tzname

time.tzset

相關文章
相關標籤/搜索