溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用Arrow時間庫

發(fā)布時間:2021-10-21 16:07:17 來源:億速云 閱讀:134 作者:iii 欄目:編程語言

這篇文章主要介紹“如何使用Arrow時間庫”,在日常操作中,相信很多人在如何使用Arrow時間庫問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用Arrow時間庫”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

DateParser 和 Dateutil

這是兩款比較友好的用于處理各種時間格式的第三方庫,它能將各種奇怪寫法的時間轉(zhuǎn)換成標準的時間格式,比如:

# -*- coding: utf-8 -*- # @Time : 2020-12-05 16:46 import time import dateparser from dateutil import parser  print(dateparser.parse("2020/11/7 5:01:08")) print(parser.parse("2020"))

碰到個需求

最近在做一些自動化文件導(dǎo)出的時候,由于有一些平臺有導(dǎo)出的數(shù)量限制,比如某某平臺如果所選時間是半年,然后累計數(shù)據(jù)量達到 50w,就會導(dǎo)出失敗。

對于這種情況就要做一下時間切分,比如可以分為按月,甚至按周來進行導(dǎo)出,也就是 rangeTime。

當在 Google 上搜索 Python time 或者 Datetime 切分時間的時候發(fā)現(xiàn)并沒有什么結(jié)果,然后就會想起有個更牛的處理時間的庫,也就是  Arrow 了。

很多的博客對 Arrow 的講解也都是一帶而過,貼出官方的例子,并沒有應(yīng)用于實際的項目,所以更多 Arrow 的用法也就沒有提到。

如何使用Arrow時間庫

Arrow

和 DateParser 一樣,Arrow 底層也是用 datetime 封裝的,在特定的地方可以和 datetime 進行交互。

一些用法展示:

# -*- coding: utf-8 -*- # @Time : 2020-12-05 16:46 i = arrow.now()  # i.replace(day=1) 替換時間為 1 號 # i.shift(months=-1) 偏移量,往前推一個月 # i.format('YYYY-MM-DD') 轉(zhuǎn)換為你想要的時間格式  print(i.shift(days=-30).format('YYYY-MM-DD')) print(i.shift(months=-3).format('YYYY-MM-DD'))  # 配合使用,鏈式法則 print(i.replace(day=1).shift(months=-1).format('YYYY-MM-DD')) print(i.replace(day=1).shift(months=-1).format('YYYY-MM-DD HH:mm:ss'))

回到解決剛才的那個需求, Arrow 的時間區(qū)間屬性可以在一段時間中根據(jù)不同時間粒度來進行切分,來達到我們的需求。

# -*- coding: utf-8 -*- # @Time : 2020-12-05 16:46 import arrow   # 開始于當前時間,往前推 120 天 end = datetime.datetime.now() start = end + datetime.timedelta(days=-120)  # 獲取 120 內(nèi)的時間范圍,以月劃分 def timeYmdRange(start=start,end=end):     tRange = []     for r in arrow.Arrow.span_range('months', start, end):         qTime = [i.format('YYYY-MM-DD') for i in r]         tRange.append(qTime)     return tRange  # 獲取 120 內(nèi)的時間范圍,以周劃分 def timeWeekRange(start=start,end=end):     tRange = []     for r in arrow.Arrow.span_range('weeks', start, end):         qTime = [i.format('YYYY-MM-DD') for i in r]         tRange.append(qTime)     return tRange  # 自定義時間格式,按月劃分,結(jié)果為 202011  def timeMonthRange(start=start,end=end):     tRange = []     for r in arrow.Arrow.range('months', start, end):         qTime = r.format('YYYYMM')         tRange.append(qTime)     return tRange  for r in timeHmsRange(start, end):     print(','.join(r))  print(timeWeekRange())

到此,關(guān)于“如何使用Arrow時間庫”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI