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制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
查看Python安装路径以及安装包路径小技巧
Apr 28 Python
Python实现堆排序的方法详解
May 03 Python
Python中动态检测编码chardet的使用教程
Jul 06 Python
Python处理CSV与List的转换方法
Apr 19 Python
python 读取摄像头数据并保存的实例
Aug 03 Python
python模拟登陆,用session维持回话的实例
Dec 27 Python
Python实现个人微信号自动监控告警的示例
Jul 03 Python
Python计算两个矩形重合面积代码实例
Sep 16 Python
python 求定积分和不定积分示例
Nov 20 Python
python检查目录文件权限并修改目录文件权限的操作
Mar 11 Python
Python如何急速下载第三方库详解
Nov 02 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
初探PHP5
2006/10/09 PHP
php下使用无限生命期Session的方法
2007/03/16 PHP
PHP实现Socket服务器的代码
2008/04/03 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
从javascript语言本身谈项目实战
2006/12/27 Javascript
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
jQuery cdn使用介绍
2013/05/08 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
JavaScript类的写法
2016/09/17 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
node中使用es6/7/8(支持性与性能)
2019/03/28 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
通过循环优化 JavaScript 程序
2019/06/24 Javascript
python实现在windows下操作word的方法
2015/04/28 Python
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
pytorch 实现cross entropy损失函数计算方式
2020/01/02 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
Python 日期与时间转换的方法
2020/08/01 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
口头翻译求职人自荐信
2013/12/07 职场文书
逃课上网检讨书
2014/02/20 职场文书
2014小学一年级班主任工作总结
2014/12/05 职场文书
邀请书模板
2015/02/02 职场文书
2015年教研员工作总结
2015/05/26 职场文书
一个独生女的故事观后感
2015/06/04 职场文书
采购部年度工作总结
2015/08/13 职场文书
幽默导游词应该怎么写?
2019/08/26 职场文书