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写的创建文件夹自定义函数mkdir()
Aug 25 Python
在Django中创建URLconf相关的通用视图的方法
Jul 20 Python
使用Python实现BT种子和磁力链接的相互转换
Nov 09 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
Feb 19 Python
使用Python实现毫秒级抢单功能
Jun 06 Python
Pycharm新手教程(只需要看这篇就够了)
Jun 18 Python
Django 返回json数据的实现示例
Mar 05 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
Apr 22 Python
在matplotlib中改变figure的布局和大小实例
Apr 23 Python
python利用paramiko实现交换机巡检的示例
Sep 22 Python
Python 操作SQLite数据库的示例
Oct 16 Python
基于Pygame实现简单的贪吃蛇游戏
Dec 06 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表单敏感字符过滤类
2014/12/08 PHP
PDO::exec讲解
2019/01/28 PHP
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
JavaScript实现拼音排序的方法
2012/11/20 Javascript
js关闭父窗口时关闭子窗口
2013/04/01 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
jquery实现限制textarea输入字数的方法
2017/09/06 jQuery
JS去掉字符串中所有的逗号
2017/10/18 Javascript
在vue中获取token,并将token写进header的方法
2018/09/26 Javascript
详解vue中async-await的使用误区
2018/12/05 Javascript
vue+django实现一对一聊天功能的实例代码
2019/07/17 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
推荐下python/ironpython:从入门到精通
2007/10/02 Python
python3多线程知识点总结
2019/09/26 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
Python tcp传输代码实例解析
2020/03/18 Python
基于python实现FTP文件上传与下载操作(ftp&amp;sftp协议)
2020/04/01 Python
什么是Python变量作用域
2020/06/03 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
2020/10/15 Python
HTTP状态码详解
2021/03/18 杂记
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
党员自我剖析材料
2014/08/31 职场文书
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
公司委托书格式范本
2014/09/16 职场文书
先进党组织事迹材料
2014/12/26 职场文书
花田少年史观后感
2015/06/16 职场文书
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python