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批量同步web服务器代码核心程序
Sep 01 Python
解密Python中的描述符(descriptor)
Jun 03 Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 Python
Python中property属性实例解析
Feb 10 Python
python list是否包含另一个list所有元素的实例
May 04 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
Jun 08 Python
pyqt5 删除layout中的所有widget方法
Jun 25 Python
Win10下Python3.7.3安装教程图解
Jul 08 Python
Python操作MongoDb数据库流程详解
Mar 05 Python
Python多线程通信queue队列用法实例分析
Mar 24 Python
python设置 matplotlib 正确显示中文的四种方式
May 10 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
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
详解:――如何将图片储存在数据库里
2006/12/05 PHP
php实现读取和写入tab分割的文件
2015/06/01 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
javascript XML数据显示为HTML一例
2008/12/23 Javascript
js tab 选项卡
2009/04/26 Javascript
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
JQuery跳出each循环的方法
2015/04/16 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
jQuery下拉友情链接美化效果代码分享
2015/08/26 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
JavaScript如何对图片进行黑白化
2018/04/10 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
Python 中的 else详解
2016/04/23 Python
Python自动生产表情包
2017/03/17 Python
Python实现Linux中的du命令
2017/06/12 Python
[原创]使用豆瓣提供的国内pypi源
2017/07/02 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
PyTorch预训练的实现
2019/09/18 Python
python中dict()的高级用法实现
2019/11/13 Python
在keras 中获取张量 tensor 的维度大小实例
2020/06/10 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
街道党工委党的群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS