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模組基本就這些內容了。