如何使用Python優雅地處理時間數據

緣起

不少時候咱們不得不和時間打交道,但在Python標準庫中處理時間的模塊其實設計的不是很友好,爲何我會這麼說?由於我相信大部分人幾乎每次在處理時間數據時一而再,再而三的去查文檔,好比時間和文本格式互轉,時間增減等看起來很是基本的操做,在Python中處理起來並不簡單。python

最要命的是,在Python標準庫中竟然有兩個模塊處理時間,一個叫time,另一個叫datetime,裏面提供了相似的方法可是兩個徹底不是一回事。到這還沒完,標準庫裏還有一個叫calendar的模塊,也是用來處理時間的。shell

今天我不帶你們去理解他們三者的關係,由於如今你記住了不表明你之後不會忘記。今天的主角是一個優雅到我不能放棄的時間處理庫 - arrow。測試

簡介

arrow是一個專門處理時間和日期的輕量級Python庫,它提供了一種合理、智能的方式來建立、操做、格式化、轉換時間和日期。spa

安裝

pip install arrow

使用

咱們直接看代碼,註釋既分割線。設計

>>> import arrow

# 獲取當前時間
>>> utc = arrow.utcnow()
>>> utc
<Arrow [2017-05-11T21:23:58.970460+00:00]>

# 調整時間
>>> utc = utc.shift(days=+1, hours=-1)
>>> utc
<Arrow [2017-05-12T20:23:58.970460+00:00]>

# 修改時間
>>> utc.replace(hour=4, minute=40)
<Arrow [2017-05-12T04:40:58.970460+00:00]>

# 轉換時區
>>> local = utc.to('US/Pacific')
>>> local
<Arrow [2017-05-11T13:23:58.970460-07:00]>

# 從文本轉爲時間對象
>>> arrow.get('2017-05-11T21:23:58.970460+00:00')
<Arrow [2017-05-11T21:23:58.970460+00:00]>

>>> arrow.get(1367900664)
<Arrow [2017-05-07T04:24:24+00:00]>

>>> arrow.get('June was born in May 1980', 'MMMM YYYY')
<Arrow [1980-05-01T00:00:00+00:00]>

# 獲取時間戳
>>> local.timestamp
1368303838

# 格式化輸出
>>> local.format()
'2017-05-11 13:23:58 -07:00'

>>> local.format('YYYY-MM-DD HH:mm:ss')
'2017-05-11 13:23:58'

>>> local.humanize()
'an hour ago'

# 轉爲標準庫對象
>>> a.date()
datetime.date(2017, 5, 7)

>>> a.time()
datetime.time(4, 38, 15, 447644)

總結

我沒有騙你吧?若是之後你的Python項目須要處理時間,請果斷拋棄標準庫,arrow將拯救你無數腦細胞。code

附上arrow官方文檔,更多酷炫用法仍是前往官網。orm

關於做者:Python技術愛好者,目前從事測試開發相關工做,轉載請註明原文出處。對象

歡迎關注個人博客 https://betacat.online,你能夠到個人公衆號中去當吃瓜羣衆。ip

Betacat.online

相關文章
相關標籤/搜索