新聞中心
這篇文章主要介紹“如何使用Arrow時間庫”,在日常操作中,相信很多人在如何使用Arrow時間庫問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用Arrow時間庫”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
創(chuàng)新互聯(lián)公司是專業(yè)的滿城網(wǎng)站建設(shè)公司,滿城接單;提供成都網(wǎng)站設(shè)計、網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行滿城網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
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"))
碰到個需求
最近在做一些自動化文件導出的時候,由于有一些平臺有導出的數(shù)量限制,比如某某平臺如果所選時間是半年,然后累計數(shù)據(jù)量達到 50w,就會導出失敗。
對于這種情況就要做一下時間切分,比如可以分為按月,甚至按周來進行導出,也就是 rangeTime。
當在 Google 上搜索 Python time 或者 Datetime 切分時間的時候發(fā)現(xiàn)并沒有什么結(jié)果,然后就會想起有個更牛的處理時間的庫,也就是 Arrow 了。
很多的博客對 Arrow 的講解也都是一帶而過,貼出官方的例子,并沒有應(yīng)用于實際的項目,所以更多 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時間庫”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
當前文章:如何使用Arrow時間庫
文章鏈接:http://www.ef60e0e.cn/article/jijpoi.html