Python 处理日期时间的Arrow库使用


Posted in Python onAugust 18, 2020

Python针对日期时间的处理提供了大量的package,类和方法,但在可用性上来看非常繁琐和麻烦

第三方库Arrow提供了一个合理的、人性化的方法来创建、操作、格式转换的日期,时间,和时间戳,帮助我们使用较少的导入和更少的代码来处理日期和时间。

$ pip install arrow

获取当前时间    arrow.utcnow(), arrow.now()

>>> arrow.utcnow() 
<Arrow [2018-02-24T13:15:29.981135+00:00]> 
>>> arrow.now() 
<Arrow [2018-02-24T21:15:50.841056+08:00]>

将时间戳转化为arrow对象    arrow.get(timestamp) 

>>> arrow.get(1519534533) 
<Arrow [2018-02-25T04:55:33+00:00]>

>>> arrow.get('1519534533') 
<Arrow [2018-02-25T04:55:33+00:00]> 

>>> arrow.get(1519534533.153443)
<Arrow [2018-02-25T04:55:33.153443+00:00]> 

>>> arrow.get('1519534533.153443')
<Arrow [2018-02-25T04:55:33.153443+00:00]>

时间戳可以是int,float或者可以转化为float的字符串

将字符串转换为arrow对象    arrow.get(string[,format_string])

>>> arrow.get('2018-02-24 12:30:45', 'YYYY-MM-DD HH:mm:ss')
<Arrow [2018-02-24T12:30:45+00:00]>

遵循ISO-8601的字符串不需要格式字符串参数即可转换

>>> arrow.get('2018-02-24T13:00:00.000-07:00')
<Arrow [2018-02-24T13:00:00-07:00]>

可以从字符串中通过格式参数搜索时间

>>> arrow.get('June was born in May 1980', 'MMMM YYYY')
<Arrow [1980-05-01T00:00:00+00:00]>

直接创建arrow对象

>>> arrow.get(2018, 2, 24)
<Arrow [2018-02-24T00:00:00+00:00]>

>>> arrow.Arrow(2018, 2, 24)
<Arrow [2018-02-24T00:00:00+00:00]>

arrow对象属性    datetime,timestamp,native,tzinfo

>>> a = arrow.utcnow()
>>> a.datetime
datetime.datetime(2018, 2, 24, 21, 15, 50, 841056, tzinfo=tzlocal())

>>> a.timestamp
1519478150

>>> a.naive
datetime.datetime(2018, 2, 24, 21, 58, 4, 309575)

>>> a.tzinfo
tzlocal()

获取datetime对象的值

>>> a.hour
21  
>>> a.day
2

时间推移    a.shift(**kwargs)

shift方法获取某个时间之前或之后的时间,关键字参数为years,months,weeks,days,hours,seconds,microseconds

>>> a.shift(weeks=+3)  #三周后
<Arrow [2018-03-17T21:58:04.309575+08:00]>  

>>> a.shift(days=-1)   #一天前  
<Arrow [2018-02-23T21:58:04.309575+08:00]

>>> a.shift(weekday=6)  #距离最近a的星期日,weekday从0到6
<Arrow [2018-02-25T21:58:04.309575+08:00]>

时间替换   a.replace(**kwargs)

返回一个被替换后的arrow对象,原对象不变

>>> a
<Arrow [2018-02-24T21:58:04.309575+08:00]>
>>> a.replace(hour=9)
<Arrow [2018-02-24T09:58:04.309575+08:00]>

格式化输出    a.format([format_string])

>>> a.format()
'2018-02-24 21:58:04+08:00'
>>> a.format('YYYY-MM-DD HH:mm:ss ZZ')
'2018-02-24 21:58:04 +08:00'

人性化输出    a.humanize()

>>> present = arrow.utcnow()
>>> past = present.shift(hours=-1)
>>> past.humanize()    #相对于当前时间
'an hour age'
>>> future = present.shift(hours=2)
>>> future.humanize(present)  #相对于参数时间
'in 2 hours'
>>> past.humanize(present, locale='zh')  #locale参数可以指定地区语言
'1天前'

时间范围和区间    a.span(string), a.floor(), a.ceil()   

                    arrow.Arrow.span_range(),arrow.Arrow.range()

>>> a
<Arrow [2018-02-24T21:58:04.309575+08:00]>
>>> a.span('hour')  #a所在的时间区间
(<Arrow [2018-02-24T21:00:00+08:00]>, <Arrow [2018-02-24T21:59:59.999999+08:00]>)  
>>> a.floor('hour')  #a所在区间的开始 
<Arrow [2018-02-24T21:00:00+08:00]>
>>> a.ceil('hour')  #a所在区间的结尾
<Arrow [2018-02-24T21:59:59.999999+08:00]
>>> start = datetime.datetime(2018, 2, 24, 12, 30)
>>> end = datetime.datetime(2018, 2, 24, 15, 20)
>>> for r in arrow.Arrow.span_range('hour',start,end):  #获取start,end之间的时间区间
...   print(r)
...
(<Arrow [2018-02-24T12:00:00+00:00]>, <Arrow [2018-02-24T12:59:59.999999+00:00]>)
(<Arrow [2018-02-24T13:00:00+00:00]>, <Arrow [2018-02-24T13:59:59.999999+00:00]>)
(<Arrow [2018-02-24T14:00:00+00:00]>, <Arrow [2018-02-24T14:59:59.999999+00:00]>)
(<Arrow [2018-02-24T15:00:00+00:00]>, <Arrow [2018-02-24T15:59:59.999999+00:00]>)
>>> for r in arrow.Arrow.range('hour',start,end):    #获取间隔单位时间的时间
...   print(r)
...
2018-02-24T12:30:00+00:00
2018-02-24T13:30:00+00:00
2018-02-24T14:30:00+00:00

格式化字符串标记

Python 处理日期时间的Arrow库使用 

更多请参考官方文档和Github
官方文档
Github

到此这篇关于Python 处理日期时间的Arrow库使用的文章就介绍到这了,更多相关Python  日期时间Arrow库内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现360皮肤按钮控件示例
Feb 21 Python
Python中的异常处理学习笔记
Jan 28 Python
详解Python异常处理中的Finally else的功能
Dec 29 Python
python实现微信自动回复功能
Apr 11 Python
python pandas dataframe 按列或者按行合并的方法
Apr 12 Python
在PyCharm中批量查找及替换的方法
Jan 20 Python
python+webdriver自动化环境搭建步骤详解
Jun 03 Python
python数据类型之间怎么转换技巧分享
Aug 20 Python
Python MOCK SERVER moco模拟接口测试过程解析
Apr 13 Python
python的Jenkins接口调用方式
May 12 Python
Python 无限级分类树状结构生成算法的实现
Jan 21 Python
python脚本框架webpy的url映射详解
Nov 20 Python
python七种方法判断字符串是否包含子串
Aug 18 #Python
Python使用socket模块实现简单tcp通信
Aug 18 #Python
python 浮点数四舍五入需要注意的地方
Aug 18 #Python
Python filter过滤器原理及实例应用
Aug 18 #Python
Python lambda表达式原理及用法解析
Aug 18 #Python
python 使用建议与技巧分享(四)
Aug 18 #Python
Python正则re模块使用步骤及原理解析
Aug 18 #Python
You might like
十天学会php之第七天
2006/10/09 PHP
PHP之数组学习
2011/05/29 PHP
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
简单实用的反馈表单无刷新提交带验证
2013/11/15 Javascript
JQuery实现鼠标移动到图片上显示边框效果
2014/01/09 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
JS获取iframe中marginHeight和marginWidth属性的方法
2015/04/01 Javascript
jQuery制作网页版选项卡
2016/07/28 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
微信小程序实现简单评论功能
2018/11/28 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
pycharm 使用心得(四)显示行号
2014/06/05 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
Python中的字符串替换操作示例
2016/06/27 Python
Python爬虫抓取技术的一些经验
2019/07/12 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
python实现KNN分类算法
2019/10/16 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
关于安全演讲稿
2014/05/09 职场文书
2014年巴西世界杯口号
2014/06/05 职场文书
高中生旷课检讨书
2014/10/08 职场文书
python引入其他文件夹下的py文件具体方法
2021/05/23 Python
浅谈MySQL user权限表
2021/06/18 MySQL
常用的Python代码调试工具总结
2021/06/23 Python
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS