python時間處理之time模塊

時間處理是工作中常用的操作,下面我們介紹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

記住這幾個操作,能夠滿足大部分需求。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章