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.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 - 11) 10 %j 一年中的第幾天(001 - 366) 11 %m 月份(01 - 12) 12 %M 分鐘數(00 - 59) 13 %p 本地am或者pm的相應符 14 %S 秒(00 - 61) 15 %U 一年中的星期數。(00 - 53星期天是一個星期的開始。)第一個星期天之 前的全部天數都放在第0周。 16 %w 一個星期中的第幾天(0 - 6,0是星期天) 17 %W 和%U基本相同,不一樣的是%W以星期一爲一個星期的開始。 18 %x 本地相應日期字符串(如15/08/01) 19 %X 本地相應時間字符串(如08:08:10) 20 %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