一篇文章帶你詳細瞭解python中一些好用的庫

時間庫—arrow

使用背景

日期時間處理在實際應用場景中無處不在,所以這也成瞭編程語言中必不可少的模塊,Python 也不例外。但是,你知道在Python中有多少個相關的模塊嗎?datetime、time、calendar、 dateutil、 pytz 等等。 你知道有多少種數據類型嗎?date、time、datetime、tzinfo、timedelta 等等。

博主在一次需求中遇到需要統計近幾個月間的數據,前端傳給我的是當前的時間戳,要通過時間戳來往前推三個月,或者四個月,半年的時間,如果隻能通過加減時間的話就會變得很麻煩,所以想到瞭使用python的時間庫—-arrow

在介紹時間庫之前,我們來看一看python的各個時間格式間是如何轉換的

時間格式的轉換

不管怎樣,你終究還是要熟練這些模塊和API操作的,記不住沒關系,至少你都要手動敲幾遍,下次遇到時要能做到翻看文檔能快速定位到某個類某個方法是做什麼用、怎麼用。

但今天我要強烈安利給你的這個時間日期庫:Arrow。它的靈感來自於 requests 庫。將所有繁雜的東西全部隱藏於身後,留給你的是 for humans 接口。充分詮釋瞭 keep it simple and stupid 這句話的含義。

安裝arrow

pip install arrow

arrow使用

  • 獲取當前時間

簡單的arrow的使用

  • 獲取不同時間格式

獲取不用的時間格式

遊標卡尺shift

這個是arrow中我認為最好用的一個屬性,他可以讓你隨便將時間進行向前或者向後的推移,基本可以滿足你所有關於時間上推算的操作,抓緊用起來吧

  • 向後推算時間

shift卡尺

  • 向前推算時間

shift卡尺

  • humanize

humanize 方法是相對於當前時刻表示為“多久以前”的一種可讀行字符串形式,默認是英文格式,指定 locale 可顯示相應的語言格式。

多久之前

  • format

時間格式化

獲取arrow對象

  • get方法是最好用的獲取arrow對象的方式
# 不帶參數,等價與 utcnow()
>>> arrow.get()
<Arrow [2018-08-24T07:11:50.528742+00:00]>
# 接受時間戳參數
>>> arrow.get(1535113845)
# 接受一個datetime對象
>>> arrow.get(datetime(2018,8,24))
<Arrow [2018-08-24T00:00:00+00:00]>
# 接收一個date對象
>>> from datetime import date
>>> arrow.get(date(2018,7,24))
<Arrow [2018-07-24T00:00:00+00:00]>
# 接收日期格式的字符串
>>> arrow.get("2018-08-11 12:30:56")
<Arrow [2018-08-11T12:30:56+00:00]>
# 接收日期字符串,並指定格式
>>> arrow.get("18-08-11 12:30:56", "YY-MM-DD HH:mm:ss")
<Arrow [2018-08-11T12:30:56+00:00]>

arrow的類型轉換和時區修改

# 字符串轉時間
print(arrow.get('2017-10-28T00:00:00+0800'))
# print(arrow.get('2017-10-28', 'YYYY-MM-DD'))  # 字符串轉時間(不推薦這樣用,沒有設時區)
print(arrow.get('2017-10-28', 'YYYY-MM-DD', tzinfo='local'))  # (推薦)
print(arrow.get('2017-10-28', 'YYYY-MM-DD', tzinfo='Asia/Shanghai'))  # 這樣也可以
print(arrow.get('2017-10-28 05:30:30', 'YYYY-MM-DD HH:mm:ss', tzinfo='local'))  # (推薦)
print('-------------')

# 時間戳
print(local.timestamp)  # 時間戳
print(arrow.get('1509120000', tzinfo='local'))  # 時間戳字符串,轉換為本時區的時間

# 時間轉為字符串,輸出(格式化)
print(local.format("YYYY-MM-DD"))
print(local.format("YYYY-MM-DD HH:mm:ss"))
print(local.replace(minutes=-1).humanize(locale='zh'))  # 本地化個性時間短語: 剛才,1分鐘前,1天前,等  (zh_tw  更多語言的支持,去查看arrow/locales.py)

python的arrow庫的使用暫時介紹到這裡,下篇介紹python處理數據的pandas庫,讓你能夠輕松的處理python中復雜而海量的數據。

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: