原地址:https://finthon.com/python-time/python
在數據處理當中,常常會碰處處理時間的問題。好比:在序列預測的過程當中,須要經過學習一段時間的數據,去預測將來一段時間的結果。這時候就要用到時間(time、datetime、calendar)模塊,今天介紹時間模塊中的time
模塊。git
在Python中有三種表示時間的方式:github
其中格式化時間中每一個字符的含義以下:機器學習
符號 | 描述 |
---|---|
%a | 簡化星期名稱 |
%A | 完整星期名稱 |
%b | 簡化月份名稱 |
%B | 完整月份名稱 |
%c | 相應的日期和時間表示 |
%d | 一個月中的第幾天(01 – 31) |
%H | 一天中的第幾個小時(24小時制,00 – 23) |
%I | 第幾個小時(12小時制,01 – 12) |
%j | 一年中的第幾天(001 – 366) |
%m | 月份(01 – 12) |
%M | 分鐘數(00 – 59) |
%p | 本地am或者pm的相應符 |
%S | 秒(01 – 61) |
%U | 一年中的星期數。(00 – 53星期天是一個星期的開始。)第一個星期天以前的全部天數都放在第0周 |
%w | 一個星期中的第幾天(0 – 6,0是星期天) |
%W | 和%U基本相同,不一樣的是%W以星期一爲一個星期的開始 |
%x | 相應日期 |
%X | 相應時間 |
%y | 去掉世紀的年份(00 – 99) |
%Y | 完整的年份 |
%Z | 時區的名字(若是不存在爲空字符) |
%% | ‘%’字符 |
在元組中會有9項參數,以下表所示:ide
關鍵字 | 描述 |
---|---|
tm_year | 年 |
tm_mon | 月(1-12) |
tm_mday | 日(1-31) |
tm_hour | 時(0-23) |
tm_min | 分(0-59) |
tm_sec | 秒(0-61),閏年多兩秒 |
tm_wday | 週一-週日(0-6) |
tm_yday | 一年中第幾天(1-366) |
tm_isdst | 是否夏令時(1:是;0:不是;-1:未知;默認 -1) |
time
模塊中經常使用的函數能夠總結成下圖,基本上就是三者如何轉換:函數
接下來咱們會一一介紹。學習
該函數返回當前時間的時間戳,也就是距離1970年1月1日00:00:00的差值。spa
代碼演示:線程
1
2
3
|
>>>import time
>>>time.time()
1540808367.8872325
|
該函數能將一個時間戳轉換成元組的形式,若是沒有指定時間戳,默認使用當前時間的時間戳。須要注意的是返回的時間是當地時間。code
代碼演示:
1
2
3
4
5
6
|
>>>import time
>>>time.localtime(1540808367.8872325)
time.struct_time(tm_year=2018, tm_mon=10, tm_mday=29, tm_hour=18, tm_min=19, tm_sec=27, tm_wday=0, tm_yday=302, tm_isdst=0)
>>>time.localtime()
time.struct_time(tm_year=2018, tm_mon=10, tm_mday=29, tm_hour=18, tm_min=26, tm_sec=10, tm_wday=0, tm_yday=302, tm_isdst=0)
|
該函數和localtime()
的功能同樣,只是它返回的時間是格林威治天文時間(UTC),也就是世界標準時間。中國時間爲UTC+8。
代碼演示:
1
2
3
|
>>>import time
>>>time.gmtime()
time.struct_time(tm_year=2018, tm_mon=10, tm_mday=29, tm_hour=10, tm_min=31, tm_sec=58, tm_wday=0, tm_yday=302, tm_isdst=0)
|
該函數將一個元組轉換成時間戳。
代碼演示:
1
2
3
|
>>>import time
>>>time.mktime(time.localtime())
1540809214.0
|
該函數能讓程序線程暫停休息,傳入幾秒,休息幾秒。
代碼演示:
1
2
3
4
|
import time
print(time.time())
time.sleep(3)
print(time.time())
|
結果爲:
1
2
|
1540809376.7814057
1540809379.7822838
|
該函數將一個元組轉換成格式化時間。若是沒有傳入參數,默認傳入time.localtime()
。
代碼演示:
1
2
3
|
>>>import time
>>>time.asctime()
'Mon Oct 29 18:39:10 2018'
|
該函數將一個時間戳轉換成格式化時間。若是沒有傳入參數,默認傳入time.time()
。
代碼演示:
1
2
3
|
>>>import time
>>>time.ctime()
'Mon Oct 29 18:41:04 2018'
|
該函數按照格式化字符把一個元組轉換成格式化時間字符串。若是沒有傳入參數,默認傳入time.localtime()
。
代碼演示:
1
2
3
|
>>>import time
>>>time.strftime("%Y-%m-%d %X", time.localtime())
'2018-10-29 18:46:14'
|
該函數按照格式化字符把一個格式化時間字符串轉成元組。
1
2
3
|
>>>import time
>>>time.strptime('2018-10-29 18:46:14', '%Y-%m-%d %X')
time.struct_time(tm_year=2018, tm_mon=10, tm_mday=29, tm_hour=18, tm_min=46, tm_sec=14, tm_wday=0, tm_yday=302, tm_isdst=-1)
|
須要注意的是,當傳入的時間中包括週數和天數(%U和%W),該函數才能使用。
本文介紹了time
模塊中經常使用的幾個函數,主要涉及到三種時間格式之間的轉換。time
模塊在機器學習中,尤爲在序列數據中使用較多。