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实现115网盘自动下载的方法
Sep 30 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
Dec 15 Python
对python Tkinter Text的用法详解
Oct 11 Python
详解如何用django实现redirect的几种方法总结
Nov 22 Python
如何使用Python进行OCR识别图片中的文字
Apr 01 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
Jun 25 Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
Nov 11 Python
Scrapy框架实现的登录网站操作示例
Feb 06 Python
Python中内建模块collections如何使用
May 27 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
Sep 29 Python
如何在C++中调用Python
May 21 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/11/22 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
PHP新特性之字节码缓存和内置服务器
2017/08/11 PHP
PHP实现财务审核通过后返现金额到客户的功能
2019/07/04 PHP
php伪静态验证码不显示的解决方案
2019/09/26 PHP
javascript 解析后的xml对象的读取方法细解
2009/07/25 Javascript
JavaScript 学习技巧
2010/02/17 Javascript
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
jQuery.prop() 使用详解
2015/07/19 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
2016/06/07 Javascript
解析js如何获取css样式
2016/12/11 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
详解写好JS条件语句的5条守则
2019/02/28 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
python中wx将图标显示在右下角的脚本代码
2013/03/08 Python
python连接mongodb操作数据示例(mongodb数据库配置类)
2013/12/31 Python
Python中使用partial改变方法默认参数实例
2015/04/28 Python
python提取页面内url列表的方法
2015/05/25 Python
python SMTP实现发送带附件电子邮件
2018/05/22 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
2019/08/28 Python
Pytorch Tensor的统计属性实例讲解
2019/12/30 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
实习生体会的自我评价范文
2013/11/28 职场文书
怎样客观的做好自我评价
2013/12/28 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang