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 相关文章推荐
py2exe 编译ico图标的代码
Mar 08 Python
Python不规范的日期字符串处理类
Jun 10 Python
python任务调度实例分析
May 19 Python
12步入门Python中的decorator装饰器使用方法
Jun 20 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
Nov 19 Python
Python简单定义与使用字典dict的方法示例
Jul 25 Python
Python正则表达式知识汇总
Sep 22 Python
python获取外网IP并发邮件的实现方法
Oct 01 Python
python opencv之分水岭算法示例
Feb 24 Python
python交互模式下输入换行/输入多行命令的方法
Jul 02 Python
pycharm设置鼠标悬停查看方法设置
Jul 29 Python
python实现在线翻译功能
Mar 03 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中如何调用webservice的实例参考
2013/04/25 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
详解vue项目构建与实战
2017/06/27 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
2018/03/01 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
2018/04/21 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
Vue实现圆环进度条的示例
2021/02/06 Vue.js
[01:26]DOTA2荣耀之路2:iG,China
2018/05/24 DOTA
Python for Informatics 第11章之正则表达式(四)
2016/04/21 Python
Mac 上切换Python多版本
2017/06/17 Python
Python dict和defaultdict使用实例解析
2020/03/12 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
英国男士时尚网站:Dandy Fellow
2018/02/09 全球购物
英国网上购买门:Direct Doors
2018/06/07 全球购物
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
家得宝墨西哥官网:The Home Depot墨西哥
2019/11/18 全球购物
俄罗斯儿童和青少年服装、鞋子及配件的在线商店:Orby
2020/02/20 全球购物
普天C++笔试题
2016/03/20 面试题
武汉某公司的C#笔试题面试题
2015/12/25 面试题
化妆品活动策划方案
2014/05/23 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
解除租房协议书
2014/12/03 职场文书
公务员政审材料范文
2014/12/23 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
升学宴来宾致辞
2015/07/27 职场文书