time 模組處理時間資料格式的幾種方式
阿新 • • 發佈:2018-11-29
time 模組中處理時間資料格式的幾種方式
在 time 模組中,時間資料主要有三種格式:時間戳(timeStamp)、時間陣列(timeStruct)和時間字串(timeStr)。形式如下圖所示:
對於這三種格式的資料,時間戳與時間陣列之間可以互相轉換,時間陣列和時間字串之間可以互相轉換,於是以時間陣列為媒介,時間戳與時間字串之間也可以互相轉換。下面對這些轉換進行具體說明。
1. 基本方法
timeStamp = time.time() # 獲取當前時間的時間戳 timeStruct = time.localtime() # 獲取當前時間的時間陣列 timeStamp = time.mktime(timeStruct) # 時間陣列轉為時間戳 timeStruct = time.localtime(timeStamp) # 時間戳轉為時間陣列 timeStr = time.asctime(timeStruct) # 時間陣列轉為英文格式的時間字串 timeStr = time.strftime("%Y-%m-%d",timeStruct) # 時間陣列轉為其它指定格式的時間字串 (time from str) timeStruct = time.strptime(timeStr,"%Y-%m-%d") # 時間字串轉為時間陣列 (str parse to time)
為了方便記憶,strftime()
可以理解為 “time from str”,strptime()
可以理解為 “str parsed to time”。
2. 常用的時間日期格式化符號
%y # 兩位數的年份表示(00-99)
%Y # 四位數的年份表示(000-9999)
%m # 月份(01-12)
%d # 月內中的一天(0-31)
%H # 24小時制小時數(0-23)
%I # 12小時制小時數(01-12)
%M # 分鐘數(00=59)
%S # 秒(00-59)
3. 三種格式間的相互轉換
import time # 1. 時間字串1->時間陣列1->時間戳->時間陣列2->時間字串2 timeStr1 = '2018-11-29' # 時間字串1 timeStruct1 = time.strptime(t, "%Y-%m-%d %H:%M:%S") # 時間陣列1,由時間字串1轉換得到 timeStamp = time.mktime(timeStruct1) # 時間陣列轉為時間戳 timeStruct2 = time.localtime(timeStamp) # 時間陣列2,由時間戳轉換得到 timeStr2 = time.strftime("%Y/%m/%d",timeStruct2) # 另一格式的時間字串,由時間陣列2轉換得到 # 2. 時間戳1->時間陣列1->時間字串->時間陣列2->時間戳2 timeStamp1 = 1543461759 # 時間戳1 timeStruct1 = time.localtime(timeStamp1) # 時間陣列1,由時間戳轉換得到 timeStr = time.strftime("%Y-%m-%d %H:%M:%S", timeStruct1) # 指定格式的時間字串,由時間陣列轉換得到 timeStruct2 = time.strptime(timeStr,"%Y-%m-%d") # 時間陣列2,由時間字串轉換得到 timeStamp2 = time.mktime(timeStruct2) # 時間戳2,由時間陣列轉換得到
4. 時間字串的格式化
在我們的日常工作中經常會遇到時間字串,這就涉及到時間字串的格式化問題。下面給出時間字串 '2018-11-29'
到 '2018/11/29'
的轉換方法:
import time
timeStr = '2018-11-29'
timeStruct = time.strptime('2018-11-29', "%Y-%m-%d")
timeStr = time.strftime("%Y/%m/%d", timeStruct)
結果為:
需要注意的是,在timeStruct = time.strptime('2018-11-29', "%Y-%m-%d")
這行程式碼中,引數"%Y-%m-%d"
'2018-11-29'
的格式來定,如果時間字串的格式為'2018/11/29'
,那麼這個引數應該改為"%Y/%m/%d"
。