time模塊
time模塊是很多人最早接觸到的模塊,像time.sleep(x)好像隨處可見,但是time模塊里面的其他方法呢?下面一起看一下time模塊。
在Python中一般用這3種方式表示時間:
1.時間戳,包括time()等函數
2.格式化的時間字符 包括asctime()等函數
3.時間元組 包括localtime()等函數
分別舉例如下:
print(time.time()) >>> 1553149608.6831224
time得到的時間單位是秒,那么這個秒是怎么來的呢?這是從1970年1月1日0點0分0秒開始計時,一直到現在經歷的秒數(不信可以自己算一下)。為什么是1970?這一年發生了很多大事,比如Unix誕生了。
print(time.localtime()) >>> time.struct_time(tm_year=2019, tm_mon=3, tm_mday=21, tm_hour=14, tm_min=27, tm_sec=24, tm_wday=3, tm_yday=80, tm_isdst=0) #從左到右依次是當前時間的年,月,日,時,分,秒,一周中第幾天,一年中第幾天,夏令時
print(time.localtime(time.time())) >>> time.struct_time(tm_year=2019, tm_mon=3, tm_mday=21, tm_hour=14, tm_min=27, tm_sec=24, tm_wday=3, tm_yday=80, tm_isdst=0)
這里得到的是一個元組,兩個print得到的結果是一樣的,說明localtime中有一個默認參數,就是time.time(),你也可以吧time.time()拿到的時間(1553149608.6831224)當做參數,得到的結果也是一樣的。
print(time.gmtime()) >>> time.struct_time(tm_year=2019, tm_mon=3, tm_mday=21, tm_hour=6, tm_min=27, tm_sec=24, tm_wday=3, tm_yday=80, tm_isdst=0)
gmtime和localtime的用法是一樣的,結果似乎也一樣,但仔細一看發現tm_hour好像少8,這是為什么呢?因為我所在的中國位於東8區,gmtime獲取的時間是零度經線的時間,沒記錯的話,應該是英國的格林尼治天文台所在的經度,也叫本初子午線嘛。
print(time.mktime(time.localtime())) >>>1553150685.0
mktime可以把得到的元組轉化成時間戳。
print(time.asctime()) >>>Thu Mar 21 14:48:48 2019 print(type(time.asctime())) >>><class 'str'> print(time.asctime(time.localtime())) >>>Thu Mar 21 14:48:48 2019
asctime可以把時間元組轉化成一個固定格式的字符串,默認參數就是time.localtime拿到的元組。
print(time.ctime()) >>>Thu Mar 21 14:53:36 2019 print(time.ctime(time.time())) >>>Thu Mar 21 14:53:36 2019
ctime和asctime拿到的結果一樣,但是參數是時間戳,默認就是time.time()
print(time.strftime('%Y-%m-%d %H:%M:%S')) >>>2019-03-21 15:00:50 print(time.strftime('%Y-%m-%d %X')) >>>2019-03-21 15:00:50 print(time.strptime('2019-03-21 14:57:45','%Y-%m-%d %X')) >>>time.struct_time(tm_year=2019, tm_mon=3, tm_mday=21, tm_hour=14, tm_min=57, tm_sec=45, tm_wday=3, tm_yday=80, tm_isdst=-1)
strftime可以按一定的規則,將時間元組轉化成格式化字符串形式,如果沒有時間元組參數,就默認為localtime。前面兩個print結果是一樣的,就是說%X可以代替%H:%M:%S,這是一種簡寫。strptime和strftime作用是相反的,注意格式要和輸入的格式化字符串一致,不然就會報錯了,format默認為:"%a %b %d %H:%M:%S %Y"。
到這里,上面三種時間的轉化關系已經出來了:


sleep就不用講了,就是線程推遲指定時長后運行,單位是秒,正常理解為等待就行,time模塊基本就這些內容了。
