如何使用Arrow时间库
导读:本文共1649.5字符,通常情况下阅读需要5分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: DateParser 和 Dateutil这是两款比较友好的用于处理各种时间格式的第三方库,它能将各种奇怪写法的时间转换成标准的时间格式,比如:#-*-coding:utf-8-*-#@Time:2020-12-0516:46importtimeimportdateparserfromdateutilimportparserprint(dateparser.pa... ...
目录
(为您整理了一些要点),点击可以直达。DateParser 和 Dateutil
这是两款比较友好的用于处理各种时间格式的第三方库,它能将各种奇怪写法的时间转换成标准的时间格式,比如:
#-*-coding:utf-8-*-#@Time:2020-12-0516:46importtimeimportdateparserfromdateutilimportparserprint(dateparser.parse("2020/11/75:01:08"))print(parser.parse("2020"))
碰到个需求
最近在做一些自动化文件导出的时候,由于有一些平台有导出的数量限制,比如某某平台如果所选时间是半年,然后累计数据量达到 50w,就会导出失败。
对于这种情况就要做一下时间切分,比如可以分为按月,甚至按周来进行导出,也就是 rangeTime。
当在 Google 上搜索 Python time 或者 Datetime 切分时间的时候发现并没有什么结果,然后就会想起有个更牛的处理时间的库,也就是 Arrow 了。
很多的博客对 Arrow 的讲解也都是一带而过,贴出官方的例子,并没有应用于实际的项目,所以更多 Arrow 的用法也就没有提到。
Arrow
和 DateParser 一样,Arrow 底层也是用 datetime 封装的,在特定的地方可以和 datetime 进行交互。
一些用法展示:
#-*-coding:utf-8-*-#@Time:2020-12-0516:46i=arrow.now()#i.replace(day=1)替换时间为1号#i.shift(months=-1)偏移量,往前推一个月#i.format('YYYY-MM-DD')转换为你想要的时间格式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-DDHH:mm:ss'))
回到解决刚才的那个需求, Arrow 的时间区间属性可以在一段时间中根据不同时间粒度来进行切分,来达到我们的需求。
#-*-coding:utf-8-*-#@Time:2020-12-0516:46importarrow#开始于当前时间,往前推120天end=datetime.datetime.now()start=end+datetime.timedelta(days=-120)#获取120内的时间范围,以月划分deftimeYmdRange(start=start,end=end):tRange=[]forrinarrow.Arrow.span_range('months',start,end):qTime=[i.format('YYYY-MM-DD')foriinr]tRange.append(qTime)returntRange#获取120内的时间范围,以周划分deftimeWeekRange(start=start,end=end):tRange=[]forrinarrow.Arrow.span_range('weeks',start,end):qTime=[i.format('YYYY-MM-DD')foriinr]tRange.append(qTime)returntRange#自定义时间格式,按月划分,结果为202011deftimeMonthRange(start=start,end=end):tRange=[]forrinarrow.Arrow.range('months',start,end):qTime=r.format('YYYYMM')tRange.append(qTime)returntRangeforrintimeHmsRange(start,end):print(','.join(r))print(timeWeekRange())
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
如何使用Arrow时间库的详细内容,希望对您有所帮助,信息来源于网络。