一篇文章帶你詳細(xì)了解python中一些好用的庫(kù)
時(shí)間庫(kù)—arrow
使用背景
日期時(shí)間處理在實(shí)際應(yīng)用場(chǎng)景中無(wú)處不在,所以這也成了編程語(yǔ)言中必不可少的模塊,Python 也不例外。但是,你知道在Python中有多少個(gè)相關(guān)的模塊嗎?datetime、time、calendar、 dateutil、 pytz 等等。 你知道有多少種數(shù)據(jù)類型嗎?date、time、datetime、tzinfo、timedelta 等等。
博主在一次需求中遇到需要統(tǒng)計(jì)近幾個(gè)月間的數(shù)據(jù),前端傳給我的是當(dāng)前的時(shí)間戳,要通過(guò)時(shí)間戳來(lái)往前推三個(gè)月,或者四個(gè)月,半年的時(shí)間,如果只能通過(guò)加減時(shí)間的話就會(huì)變得很麻煩,所以想到了使用python的時(shí)間庫(kù)----arrow
在介紹時(shí)間庫(kù)之前,我們來(lái)看一看python的各個(gè)時(shí)間格式間是如何轉(zhuǎn)換的

不管怎樣,你終究還是要熟練這些模塊和API操作的,記不住沒(méi)關(guān)系,至少你都要手動(dòng)敲幾遍,下次遇到時(shí)要能做到翻看文檔能快速定位到某個(gè)類某個(gè)方法是做什么用、怎么用。
但今天我要強(qiáng)烈安利給你的這個(gè)時(shí)間日期庫(kù):Arrow。它的靈感來(lái)自于 requests 庫(kù)。將所有繁雜的東西全部隱藏于身后,留給你的是 for humans 接口。充分詮釋了 keep it simple and stupid 這句話的含義。
安裝arrow
pip install arrow
arrow使用
- 獲取當(dāng)前時(shí)間

- 獲取不同時(shí)間格式

游標(biāo)卡尺shift
這個(gè)是arrow中我認(rèn)為最好用的一個(gè)屬性,他可以讓你隨便將時(shí)間進(jìn)行向前或者向后的推移,基本可以滿足你所有關(guān)于時(shí)間上推算的操作,抓緊用起來(lái)吧
- 向后推算時(shí)間

- 向前推算時(shí)間

- humanize
humanize 方法是相對(duì)于當(dāng)前時(shí)刻表示為“多久以前”的一種可讀行字符串形式,默認(rèn)是英文格式,指定 locale 可顯示相應(yīng)的語(yǔ)言格式。

- format

獲取arrow對(duì)象
- get方法是最好用的獲取arrow對(duì)象的方式
# 不帶參數(shù),等價(jià)與 utcnow()
>>> arrow.get()
<Arrow [2018-08-24T07:11:50.528742+00:00]>
# 接受時(shí)間戳參數(shù)
>>> arrow.get(1535113845)
# 接受一個(gè)datetime對(duì)象
>>> arrow.get(datetime(2018,8,24))
<Arrow [2018-08-24T00:00:00+00:00]>
# 接收一個(gè)date對(duì)象
>>> 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的類型轉(zhuǎn)換和時(shí)區(qū)修改
# 字符串轉(zhuǎn)時(shí)間
print(arrow.get('2017-10-28T00:00:00+0800'))
# print(arrow.get('2017-10-28', 'YYYY-MM-DD')) # 字符串轉(zhuǎn)時(shí)間(不推薦這樣用,沒(méi)有設(shè)時(shí)區(qū))
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('-------------')
# 時(shí)間戳
print(local.timestamp) # 時(shí)間戳
print(arrow.get('1509120000', tzinfo='local')) # 時(shí)間戳字符串,轉(zhuǎn)換為本時(shí)區(qū)的時(shí)間
# 時(shí)間轉(zhuǎn)為字符串,輸出(格式化)
print(local.format("YYYY-MM-DD"))
print(local.format("YYYY-MM-DD HH:mm:ss"))
print(local.replace(minutes=-1).humanize(locale='zh')) # 本地化個(gè)性時(shí)間短語(yǔ): 剛才,1分鐘前,1天前,等 (zh_tw 更多語(yǔ)言的支持,去查看arrow/locales.py)
python的arrow庫(kù)的使用暫時(shí)介紹到這里,下篇介紹python處理數(shù)據(jù)的pandas庫(kù),讓你能夠輕松的處理python中復(fù)雜而海量的數(shù)據(jù)。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python3二分查找?guī)旌瘮?shù)bisect(),bisect_left()和bisect_right()的區(qū)別
這篇文章主要介紹了Python3二分查找?guī)旌瘮?shù)bisect(),bisect_left()和bisect_right()的區(qū)別,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
python設(shè)置windows桌面壁紙的實(shí)現(xiàn)代碼
每天換一個(gè)壁紙,每天好心情。喜歡的朋友可以參考下2013-01-01
python常量折疊基礎(chǔ)知識(shí)點(diǎn)講解
在本篇文章里小編給大家整理的是一篇關(guān)于python常量折疊基礎(chǔ)知識(shí)點(diǎn)講解,對(duì)此有興趣的朋友可以跟著學(xué)習(xí)下。2021-02-02
PyTorch中的Subset類簡(jiǎn)介與應(yīng)用示例代碼
在深度學(xué)習(xí)框架PyTorch中,torch.utils.data.Subset是一個(gè)非常有用的類,用于從一個(gè)較大的數(shù)據(jù)集中選擇一個(gè)子集,本文將介紹Subset的概念、基本用法以及一些實(shí)際應(yīng)用示例,感興趣的朋友一起看看吧2024-08-08
Python爬蟲(chóng)——爬取豆瓣電影Top250代碼實(shí)例
這篇文章主要介紹了Python爬取豆瓣電影Top250實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04

