Python?arrow?更好的日期時(shí)間模塊
Python中有很多時(shí)間和日期處理的庫(kù),有time、datetime等,雖然提供了很完整的對(duì)日期、時(shí)間以及時(shí)區(qū)轉(zhuǎn)換處理的功能,但是方法過(guò)多,不易于記憶,而且經(jīng)常需要各種轉(zhuǎn)換操作,非常繁瑣,比如時(shí)間和時(shí)間戳的轉(zhuǎn)換,格式化時(shí)間字符串轉(zhuǎn)換等等,幾乎每次使用都要先看一下教程文檔。那么有沒(méi)有使用起來(lái)更人性化的日期時(shí)間處理庫(kù)呢?接下來(lái)就來(lái)看一下arrow日期時(shí)間庫(kù)。
arrow是一個(gè)專(zhuān)門(mén)處理時(shí)間和日期的輕量級(jí)Python庫(kù),它提供了一種合理、人性化的方式來(lái)創(chuàng)建、操作、格式化、轉(zhuǎn)換日期、時(shí)間和時(shí)間戳,可以比較輕易的創(chuàng)建具有時(shí)區(qū)意識(shí)的日期和時(shí)間實(shí)例。
可以使用pip install arrow進(jìn)行安裝。
arrow模塊的使用
獲取arrow對(duì)象
Arrow可以很靈活的將多種格式的時(shí)間數(shù)據(jù)轉(zhuǎn)換成Arrow對(duì)象,如下:
import arrow print(repr(arrow.Arrow(2021, 8, 23, 8))) print(repr(arrow.get(2021, 8, 23, 8, 40))) print(repr(arrow.get('2021-08-23 09:00'))) print(repr(arrow.get('2021.08.23'))) print(repr(arrow.get('23/2012/08', 'DD/YYYY/MM')))
執(zhí)行結(jié)果如下:
上面幾種方式都可以將字符數(shù)據(jù)轉(zhuǎn)換為arrow對(duì)象,轉(zhuǎn)換非常靈活。 除此之外,還可以把時(shí)間戳轉(zhuǎn)換為arrow對(duì)象。
print(repr(arrow.get(1629683393.6558669)))
獲取當(dāng)前時(shí)間
utc_time = arrow.utcnow() local_time = arrow.now() print(utc_time) print(local_time)
通過(guò)utcnow()函數(shù)和now()函數(shù)分別獲取的是utc時(shí)間和本地時(shí)間,當(dāng)然我們也可以在調(diào)用now()時(shí)指定時(shí)區(qū),從而獲取指定時(shí)區(qū)的時(shí)間,例如arrow.now('US/Pacific')。
時(shí)間形式轉(zhuǎn)換
使用日期時(shí)間的時(shí)候我們經(jīng)常需要轉(zhuǎn)換操作,比如轉(zhuǎn)換成指定格式的時(shí)間字符串,轉(zhuǎn)換成時(shí)間戳等。
轉(zhuǎn)換成時(shí)間字符串
now = arrow.now() print(now) print(now.format()) print(now.format("YYYY-MM-DD hh:mm:ss")) print(now.format("YYYY-MM-DD"))
執(zhí)行結(jié)果如下:
看到這個(gè),是不是感覺(jué)比datetime模塊的'%Y-%M-%D %h:%m:%s'格式化方式更人性化更便于記憶呢。
轉(zhuǎn)換成時(shí)間戳
可以使用t.timestamp將arrow對(duì)象轉(zhuǎn)換成時(shí)間戳。
now.timestamp
獲取數(shù)據(jù)
轉(zhuǎn)換為Arrow對(duì)象后,我們可以很方便的獲取我們想要的各種時(shí)間數(shù)據(jù),通過(guò)year、month、day、hour、minute、second、week等屬性,如:
now = arrow.now() print(now.year) print(now.month) print(now.day) print(now.hour) print(now.minute) print(now.second) print(now.week)
修改時(shí)間
有時(shí)拿到一個(gè)時(shí)間時(shí),我們需要對(duì)時(shí)間就行修改,例如修改時(shí)區(qū)、修改時(shí)間等等,我們可以使用以下方式去修改。
now = arrow.now() print(now.format("YYYY-MM-DD hh:mm:ss")) # 2021-08-23 10:11:04 now_utc = now.to("utc") print(now_utc.format("YYYY-MM-DD hh:mm:ss")) # 2021-08-23 02:11:04 now1 = now.replace(day=31, hour=12) print(now1.format("YYYY-MM-DD hh:mm:ss")) # 2021-08-31 12:11:04 now2 = now.shift(months=-2) print(now2.format("YYYY-MM-DD hh:mm:ss")) # 2021-06-23 10:11:04
我們可以使用to()方法切換時(shí)區(qū),使用replace()方法修改時(shí)間,使用shift()進(jìn)行時(shí)間的前后推移。
同Python內(nèi)置日期datetime庫(kù)一樣,arrow對(duì)象也支持時(shí)間的大小對(duì)比,還有計(jì)算時(shí)間差操作,除此之外,還有很多意想不到的操作,感興趣的話(huà),可以查看官方文檔:Arrow: Better dates & times for Python — Arrow 1.1.1 documentation)
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
手把手帶你了解Python數(shù)據(jù)分析--matplotlib
這篇文章主要介紹了Python實(shí)現(xiàn)matplotlib顯示中文的方法,結(jié)合實(shí)例形式詳細(xì)總結(jié)分析了Python使用matplotlib庫(kù)繪圖時(shí)顯示中文的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2021-08-08淺談Keras的Sequential與PyTorch的Sequential的區(qū)別
這篇文章主要介紹了淺談Keras的Sequential與PyTorch的Sequential的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06Python中的線(xiàn)程操作模塊(oncurrent)
這篇文章介紹了Python中的線(xiàn)程操作模塊(oncurrent),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05關(guān)于Python中異常(Exception)的匯總
異常是指程序中的例外,違例情況。異常機(jī)制是指程序出現(xiàn)錯(cuò)誤后,程序的處理方法。當(dāng)出現(xiàn)錯(cuò)誤后,程序的執(zhí)行流程發(fā)生改變,程序的控制權(quán)轉(zhuǎn)移到異常處理。下面這篇文章主要匯總了關(guān)于Python中異常(Exception)的相關(guān)資料,需要的朋友可以參考下。2017-01-01