Python使用arrow库优雅地处理时间数据详解


Posted in Python onOctober 10, 2017

前言

大家应该都知道在很多时候我们不得不和时间打交道,但在Python标准库中处理时间的模块其实设计的不是很友好,为什么我会这么说?因为我相信大部分人几乎每次在处理时间数据时一而再,再而三的去查文档,比如时间和文本格式互转,时间增减等看起来非常基本的操作,在Python中处理起来并不简单。

最要命的是,在Python标准库中居然有两个模块处理时间,一个叫time,另外一个叫datetime,里面提供了类似的方法但是两个完全不是一回事。到这还没完,标准库里还有一个叫calendar的模块,也是用来处理时间的。

今天我不带大家去理解他们三者的关系,因为现在你记住了不代表你以后不会忘记。今天的主角是一个优雅到我不能放弃的时间处理库 - arrow。

简介

arrow是一个专门处理时间和日期的轻量级Python库,它提供了一种合理、智能的方式来创建、操作、格式化、转换时间和日期。

安装

pip install arrow

使用

我们直接看代码,注释既分割线。

>>> import arrow

# 获取当前时间
>>> utc = arrow.utcnow()
>>> utc
<Arrow [2017-05-11T21:23:58.970460+00:00]>

# 调整时间
>>> utc = utc.shift(days=+1, hours=-1)
>>> utc
<Arrow [2017-05-12T20:23:58.970460+00:00]>

# 修改时间
>>> utc.replace(hour=4, minute=40)
<Arrow [2017-05-12T04:40:58.970460+00:00]>

# 转换时区
>>> local = utc.to('US/Pacific')
>>> local
<Arrow [2017-05-11T13:23:58.970460-07:00]>

# 从文本转为时间对象
>>> arrow.get('2017-05-11T21:23:58.970460+00:00')
<Arrow [2017-05-11T21:23:58.970460+00:00]>

>>> arrow.get(1367900664)
<Arrow [2017-05-07T04:24:24+00:00]>

>>> arrow.get('June was born in May 1980', 'MMMM YYYY')
<Arrow [1980-05-01T00:00:00+00:00]>

# 获取时间戳
>>> local.timestamp
1368303838

# 格式化输出
>>> local.format()
'2017-05-11 13:23:58 -07:00'

>>> local.format('YYYY-MM-DD HH:mm:ss')
'2017-05-11 13:23:58'

>>> local.humanize()
'an hour ago'

# 转为标准库对象
>>> a.date()
datetime.date(2017, 5, 7)

>>> a.time()
datetime.time(4, 38, 15, 447644)

总结

我没有骗你吧?如果以后你的Python项目需要处理时间,请果断抛弃标准库,arrow将拯救你无数脑细胞。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

附上arrow官方文档,更多酷炫用法还是前往官网。

http://arrow.readthedocs.io/en/latest/

Python 相关文章推荐
python机器学习案例教程——K最近邻算法的实现
Dec 28 Python
详谈Pandas中iloc和loc以及ix的区别
Jun 08 Python
使用Python如何测试InnoDB与MyISAM的读写性能
Sep 18 Python
python点击鼠标获取坐标(Graphics)
Aug 10 Python
为什么黑客都用python(123个黑客必备的Python工具)
Jan 31 Python
tensorflow 实现数据类型转换
Feb 17 Python
python-xpath获取html文档的部分内容
Mar 06 Python
Python视频编辑库MoviePy的使用
Apr 01 Python
使用Python将图片转正方形的两种方法实例代码详解
Apr 29 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
Jun 28 Python
用python绘制樱花树
Oct 09 Python
Python使用getpass库读取密码的示例
Oct 10 #Python
Python 逐行分割大txt文件的方法
Oct 10 #Python
Python输出带颜色的字符串实例
Oct 10 #Python
python中使用正则表达式的连接符示例代码
Oct 10 #Python
python利用正则表达式排除集合中字符的功能示例
Oct 10 #Python
python 上下文管理器使用方法小结
Oct 10 #Python
python中如何使用正则表达式的集合字符示例
Oct 09 #Python
You might like
如何使用动态共享对象的模式来安装PHP
2006/10/09 PHP
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
CodeIgniter钩子用法实例详解
2016/01/20 PHP
简单的php购物车代码
2020/06/05 PHP
js 文件引入实现代码
2010/04/23 Javascript
JQuery 操作select标签实现代码
2010/05/14 Javascript
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
javascript Slip.js实现整屏滑动的手机网页
2015/11/25 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
整理关于Bootstrap警示框的慕课笔记
2017/03/29 Javascript
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
vue如何使用rem适配
2021/02/06 Vue.js
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
Python使用gensim计算文档相似性
2016/04/10 Python
Python 查看文件的读写权限方法
2018/01/23 Python
python3+PyQt5重新实现自定义数据拖放处理
2018/04/19 Python
python实现将文件夹内的每张图片批量分割成多张
2019/07/22 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
将python安装信息加入注册表的示例
2019/11/20 Python
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
院药学专业个人求职信
2013/09/21 职场文书
技校生自我鉴定范文
2013/09/26 职场文书
大学生职业规划前言模板
2013/12/27 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
教师学习培训邀请函
2014/02/04 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
机械专业毕业生自我鉴定2014
2014/10/04 职场文书
Jsonp劫持学习
2021/04/01 PHP
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers