日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
一篇文章教會(huì)你Arrow 時(shí)間庫在項(xiàng)目中的實(shí)際應(yīng)用

 Python 默認(rèn)支持時(shí)間序列的庫有很多,通常 time 和 datetime 是用的最多的,雖然他們?cè)谝话闱樾蜗陆^對(duì)夠用,但是總有一些比較奇葩的時(shí)間格式的需求,而我們也就不能僅限于這兩個(gè) Python 自帶的庫。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、涼城網(wǎng)絡(luò)推廣、重慶小程序開發(fā)、涼城網(wǎng)絡(luò)營銷、涼城企業(yè)策劃、涼城品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供涼城建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com

[[358025]]

DateParser 和 Dateutil

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

 
 
 
 
  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")) 

碰到個(gè)需求

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

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

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

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

[[358026]]

Arrow

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

一些用法展示:

 
 
 
 
  1. # -*- coding: utf-8 -*- 
  2. # @Time : 2020-12-05 16:46 
  3. i = arrow.now() 
  4.  
  5. # i.replace(day=1) 替換時(shí)間為 1 號(hào) 
  6. # i.shift(months=-1) 偏移量,往前推一個(gè)月 
  7. # i.format('YYYY-MM-DD') 轉(zhuǎn)換為你想要的時(shí)間格式 
  8.  
  9. print(i.shift(days=-30).format('YYYY-MM-DD')) 
  10. print(i.shift(months=-3).format('YYYY-MM-DD')) 
  11.  
  12. # 配合使用,鏈?zhǔn)椒▌t 
  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')) 

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

 
 
 
 
  1. # -*- coding: utf-8 -*- 
  2. # @Time : 2020-12-05 16:46 
  3. import arrow 
  4.  
  5.  
  6. # 開始于當(dāng)前時(shí)間,往前推 120 天 
  7. end = datetime.datetime.now() 
  8. start = end + datetime.timedelta(days=-120) 
  9.  
  10. # 獲取 120 內(nèi)的時(shí)間范圍,以月劃分 
  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 內(nèi)的時(shí)間范圍,以周劃分 
  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. # 自定義時(shí)間格式,按月劃分,結(jié)果為 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()) 

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


文章題目:一篇文章教會(huì)你Arrow 時(shí)間庫在項(xiàng)目中的實(shí)際應(yīng)用
URL鏈接:http://www.5511xx.com/article/dpoidep.html