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中查找excel某一列的重复数据 剔除之后打印
Feb 10 Python
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
May 06 Python
Python中使用Tkinter模块创建GUI程序实例
Jan 14 Python
使用Pyrex来扩展和加速Python程序的教程
Apr 13 Python
Python使用urllib2模块实现断点续传下载的方法
Jun 17 Python
Python 字典与字符串的互转实例
Jan 13 Python
python学习之面向对象【入门初级篇】
Jan 21 Python
Python实现字符串反转的常用方法分析【4种方法】
Sep 30 Python
Python图像处理PIL各模块详细介绍(推荐)
Jul 17 Python
python next()和iter()函数原理解析
Feb 07 Python
Python tkinter布局与按钮间距设置方式
Mar 04 Python
Python基础教程,Python入门教程(超详细)
Jun 24 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/12/04 PHP
一些使用频率比较高的php函数
2008/10/03 PHP
PHP函数学习之PHP函数点评
2012/07/05 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
php ci框架验证码实例分析
2013/06/26 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
js注意img图片的onerror事件的分析
2011/01/01 Javascript
使用Math.floor与Math.random取随机整数的方法详解
2013/05/07 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
javascript常用功能汇总
2015/07/05 Javascript
轻量级javascript 框架Backbone使用指南
2015/07/24 Javascript
angularjs指令之绑定策略(@、=、&amp;)
2017/04/13 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
vue组件化中slot的基本使用方法
2019/05/01 Javascript
TypeScript的安装、使用、自动编译的实现
2020/04/10 Javascript
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
python连接mongodb密码认证实例
2018/10/16 Python
使用django的objects.filter()方法匹配多个关键字的方法
2019/07/18 Python
python实现IOU计算案例
2020/04/12 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
HTML5 表单验证失败的提示语问题
2017/07/13 HTML / CSS
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
办公室保洁员岗位职责
2013/12/02 职场文书
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
上课不认真检讨书
2014/09/17 职场文书
关于军训的感想
2015/08/07 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书
送给火锅店的创意营销方案!
2019/07/08 职场文书
《烈火英雄》观后感:致敬和平时代的英雄
2019/11/11 职场文书