温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用Arrow时间库

发布时间:2021-10-21 16:07:17 来源:亿速云 阅读:141 作者:iii 栏目:编程语言

这篇文章主要介绍“如何使用Arrow时间库”,在日常操作中,相信很多人在如何使用Arrow时间库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Arrow时间库”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

DateParser 和 Dateutil

这是两款比较友好的用于处理各种时间格式的第三方库,它能将各种奇怪写法的时间转换成标准的时间格式,比如:

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

碰到个需求

最近在做一些自动化文件导出的时候,由于有一些平台有导出的数量限制,比如某某平台如果所选时间是半年,然后累计数据量达到 50w,就会导出失败。

对于这种情况就要做一下时间切分,比如可以分为按月,甚至按周来进行导出,也就是 rangeTime。

当在 Google 上搜索 Python time 或者 Datetime 切分时间的时候发现并没有什么结果,然后就会想起有个更牛的处理时间的库,也就是  Arrow 了。

很多的博客对 Arrow 的讲解也都是一带而过,贴出官方的例子,并没有应用于实际的项目,所以更多 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') 转换为你想要的时间格式  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 的时间区间属性可以在一段时间中根据不同时间粒度来进行切分,来达到我们的需求。

# -*- coding: utf-8 -*- # @Time : 2020-12-05 16:46 import arrow   # 开始于当前时间,往前推 120 天 end = datetime.datetime.now() start = end + datetime.timedelta(days=-120)  # 获取 120 内的时间范围,以月划分 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 内的时间范围,以周划分 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  # 自定义时间格式,按月划分,结果为 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())

到此,关于“如何使用Arrow时间库”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI