時間處理是工作中常用的操作,下面我們介紹time模塊常用的操作,開始之前我們先來看常見問題:
1:如何獲取當前時間?
2:如何將時間轉成字符串?
3:如何將字符串轉成時間,可以獲取對應的年月日時分秒?
4:如何將時間轉成自己想要的格式?
掌握time模塊,以上問題輕鬆解決。
1.時間類型劃分
1.1 導入time模塊
import time
1.2 time模塊
time模塊那麼多方法,如何區分?
根據時間格式劃分爲:
a)時間戳
b)struct_time格式(時間格式,可以輕鬆獲取年月日,時分秒各個值)
c)字符串時間(可讀性好)
下面逐一詳解(以下操作在jupyter,python3.x版本操作)
2 時間戳處理
跟着感覺走:
2.1 獲取時間戳
什麼是時間戳?就是一個大的浮點數,計算機用來記錄時間用的,大概好像是1970年的某年月開始的。
獲取時間戳正確姿勢:
time.time():獲取時間戳,返回浮點數,單位秒
import time
t=time.time()
t
結果:
1582968461.3394606
獲取時間戳,對我們來說意義不大,怎麼獲取對應的年與日時分秒?
2.2 時間戳轉struct_time:
struct_time是一個對象,類似元組,主要包含時間信息
屬性 | 說明 |
---|---|
tm_year | 年 |
tm_mon | 月[01,31] |
tm_mday | 日 |
tm_hour | 小時 [ 00,12] |
tm_min | 分鐘 [00,59] |
tm_sec | 秒 [00,59] |
tm_wday | 星期 [0,6] |
tm_yday | 從每年的1月1日開始的天數 |
tm_isdst | 夏令時(暫時忽略) |
有了這個結構,獲取時間太easy,如何獲取?
方法:time.localtime([sec])
#獲取當前時間
st = time.localtime()
#獲取年
print(st.tm_year)
#獲取小時
print(st.tm_hour)
#時間戳轉struct_time
t=1582968461
print(time.localtime(t))
輸出結果:
2020
17
time.struct_time(tm_year=2020, tm_mon=2, tm_mday=29, tm_hour=17, tm_min=27, tm_sec=41, tm_wday=5, tm_yday=60, tm_isdst=0)
2.3 時間戳轉時間字符串
time.ctime(seconds):將時間戳轉成可讀字符串
#獲取當前時間
print(time.ctime())
#時間戳轉字符串
t=1582968461
print(time.ctime(t))
輸出結果:
Sat Feb 29 17:46:18 2020
Sat Feb 29 17:27:41 2020
3 struct_time處理
主要下面幾個操作:
方法 | 說明 |
---|---|
time.mktime(tuple) | struct_time轉時間戳 |
time.asctime([tuple]) | struct_time轉時間日期字符串 |
time.strftime(format[, tuple]) | struct_time轉指定時間格式字符串 |
先來看前兩個操作:
#獲取當前時間
st = time.localtime()
#struct_time轉時間戳
print(time.mktime(st))
#struct_time轉字符串
print(time.asctime(st))
輸出結果:
1582974399.0
Sat Feb 29 19:06:39 2020
如何將struct_time轉自定義格式字符串?
time.strftime(format[, tuple]):format爲指定格式,tuple爲struct_time對象
format格式可以通過help(time.strftime)查看,主要格式如下:
格式 | 說明 |
---|---|
%Y | 年份:[xxxx] |
%y | 年份:[xx],不帶世紀 |
%m | 月份:[01,12] |
%d | 日:[01,,3] |
%H | 小時:[00,23] |
%M | 分:[00,59] |
%S | 秒:[00,59] |
%x | 日期:[月/日/年份] |
%X | 時間:[時:分:秒] |
例子:
st = time.localtime()
#年-月-日
print(time.strftime('%Y-%m-%d', st))
#時-分-秒
print(time.strftime('%H-%M-%S',st))
#年-月-日 時:分:秒
print(time.strftime('%Y-%m-%d %H:%M:%S', st))
結果:
2020-02-29
19-19-31
2020-02-29 19:19:31
字符換時間轉時間
比如將"2020-02-29 19:19:31"轉成struct_time或者時間戳如何操作?
strptime(string, format),與strftime相反,具體操作:
s = '2020-02-29 19:19:31'
st = time.strptime(s,'%Y-%m-%d %H:%M:%S')
print(st)
輸出結果:
time.struct_time(tm_year=2020, tm_mon=2, tm_mday=29, tm_hour=19, tm_min=19, tm_sec=31, tm_wday=5, tm_yday=60, tm_isdst=-1)
以上就是時間轉換主要方法。
總結:
時間戳轉字符串流程
#獲取當前時間錯
t = time.time()
print(t)
#轉成struct_time
st = time.localtime(t)
print(st)
#st轉自定義格式字符串
s = time.strftime('%Y-%m-%d %H:%M:%S', st)
print(s)
輸出結果:
1582975571.0656374
time.struct_time(tm_year=2020, tm_mon=2, tm_mday=29, tm_hour=19, tm_min=26, tm_sec=11, tm_wday=5, tm_yday=60, tm_isdst=0)
2020-02-29 19:26:11
字符串轉時間戳
s = '2020-02-29 19:26:11'
#字符串轉struct_time
st = time.strptime(s,'%Y-%m-%d %H:%M:%S')
print(st)
#struct_time轉時間戳
t = time.mktime(st)
print(t)
結果:
time.struct_time(tm_year=2020, tm_mon=2, tm_mday=29, tm_hour=19, tm_min=26, tm_sec=11, tm_wday=5, tm_yday=60, tm_isdst=-1)
1582975571.0
記住這幾個操作,能夠滿足大部分需求。