成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇文章教會你Arrow 時間庫在項目中的實際應用

開發 后端
Python 默認支持時間序列的庫有很多,通常 time 和 datetime 是用的最多的,雖然他們在一般情形下絕對夠用,但是總有一些比較奇葩的時間格式的需求,而我們也就不能僅限于這兩個 Python 自帶的庫。

 Python 默認支持時間序列的庫有很多,通常 time 和 datetime 是用的最多的,雖然他們在一般情形下絕對夠用,但是總有一些比較奇葩的時間格式的需求,而我們也就不能僅限于這兩個 Python 自帶的庫。

[[358025]]

DateParser 和 Dateutil

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

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

碰到個需求

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

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

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

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

[[358026]]

Arrow

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

一些用法展示:

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

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

  1. # -*- coding: utf-8 -*- 
  2. # @Time : 2020-12-05 16:46 
  3. import arrow 
  4.  
  5.  
  6. # 開始于當前時間,往前推 120 天 
  7. end = datetime.datetime.now() 
  8. start = end + datetime.timedelta(days=-120) 
  9.  
  10. # 獲取 120 內的時間范圍,以月劃分 
  11. def timeYmdRange(start=start,end=end): 
  12.     tRange = [] 
  13.     for r in arrow.Arrow.span_range('months', start, end): 
  14.         qTime = [i.format('YYYY-MM-DD'for i in r] 
  15.         tRange.append(qTime) 
  16.     return tRange 
  17.  
  18. # 獲取 120 內的時間范圍,以周劃分 
  19. def timeWeekRange(start=start,end=end): 
  20.     tRange = [] 
  21.     for r in arrow.Arrow.span_range('weeks', start, end): 
  22.         qTime = [i.format('YYYY-MM-DD'for i in r] 
  23.         tRange.append(qTime) 
  24.     return tRange 
  25.  
  26. # 自定義時間格式,按月劃分,結果為 202011  
  27. def timeMonthRange(start=start,end=end): 
  28.     tRange = [] 
  29.     for r in arrow.Arrow.range('months', start, end): 
  30.         qTime = r.format('YYYYMM'
  31.         tRange.append(qTime) 
  32.     return tRange 
  33.  
  34. for r in timeHmsRange(start, end): 
  35.     print(','.join(r)) 
  36.  
  37. print(timeWeekRange()) 

這樣一來就可以滿足我們的需求,并且保證在特定時間區間內不會重復天數(或者更小的時間粒度),不要使用很多很多的時間處理庫,用的越多也就更加錯綜復雜,有那么一兩款好用,易用的時間庫足矣,哈哈 !!

 

責任編輯:姜華 來源: Python爬蟲與數據挖掘
相關推薦

2019-10-17 19:15:22

jQueryJavaScript前端

2020-11-13 08:14:28

JavaScript

2023-06-21 00:10:17

JSONWeb服務器JavaScript

2021-02-19 19:35:53

SVG 形狀元素

2021-02-17 20:40:22

SVG圖像模式

2021-03-02 18:35:27

SVG開發空間

2021-12-28 09:27:45

Javascript 高階函數前端

2020-12-01 09:36:35

SVG元素屬性

2021-05-29 10:20:54

GoModules語言

2021-02-24 10:14:04

PythonClassPython基礎

2020-12-16 08:07:28

語言基礎反射

2021-09-15 10:00:33

Go語言Modules

2021-03-19 10:01:41

SVG畫多邊形Htm基礎

2020-12-10 08:20:27

Python微博評論

2020-12-20 09:59:13

Go語言基礎技術

2021-12-30 10:28:30

Python 微博評論

2020-12-31 08:35:07

Python抖音瀏覽器

2021-07-10 10:01:37

Python簡單函數

2021-03-17 09:59:26

Python函數調用

2024-04-11 12:57:55

Python函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄色一级免费 | 久久小视频 | 亚洲每日更新 | 精品国模一区二区三区欧美 | 亚洲第一天堂无码专区 | 国产精品久久久久一区二区三区 | 欧美v日韩v | 日日操夜夜操视频 | 2018中文字幕第一页 | 精品国产久 | 久久久久国产精品人 | 久久精品亚洲国产奇米99 | 国产高清视频 | 欧美一级在线免费观看 | 亚洲国产精品日本 | 噜噜噜噜狠狠狠7777视频 | 亚洲a在线视频 | 欧美a区 | 国产在线一区二 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 暖暖日本在线视频 | 99久久婷婷国产精品综合 | 欧美精品久久久久 | 精品自拍视频在线观看 | 欧美视频精品 | 成人国产精品久久 | 韩日视频在线观看 | 国产小视频自拍 | 手机在线不卡av | 国产成人免费视频网站高清观看视频 | 中文字幕亚洲区 | 国产亚洲成av人片在线观看桃 | 国产精品日韩欧美一区二区三区 | 欧美性猛交一区二区三区精品 | av一二三区 | 欧美黄色小视频 | 99av成人精品国语自产拍 | 欧美日韩国产一区二区 | 国产精品免费av | 99精品视频在线观看 | 久久精品视频亚洲 |