1. 程式人生 > >time 模組處理時間資料格式的幾種方式

time 模組處理時間資料格式的幾種方式

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"