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中实现对list做减法操作介绍
Jan 09 Python
Python3.2中的字符串函数学习总结
Apr 23 Python
在Python中操作字符串之replace()方法的使用
May 19 Python
Python的Django中django-userena组件的简单使用教程
May 30 Python
小小聊天室Python代码实现
Aug 17 Python
详解python中__name__的意义以及作用
Aug 07 Python
python进阶之自定义可迭代的类
Aug 20 Python
python+jinja2实现接口数据批量生成工具
Aug 28 Python
Python 3.8正式发布,来尝鲜这些新特性吧
Oct 15 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
Feb 26 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
Apr 10 Python
详解python的内存分配机制
May 10 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 urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
一个简单的网页密码登陆php代码
2012/07/17 PHP
在php中设置session用memcache来存储的方法总结
2016/01/14 PHP
PHP实现简单实用的分页类代码
2016/04/08 PHP
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
jquery中map函数遍历数组用法实例
2015/05/18 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
2015/10/28 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
JS使用正则表达式验证身份证号码
2017/06/23 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
koa-router源码学习小结
2018/09/07 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
原生js实现抽奖小游戏
2019/06/27 Javascript
JS this关键字在ajax中使用出现问题解决方案
2020/07/17 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
Python的语言类型(详解)
2017/06/24 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
python随机数分布random均匀分布实例
2019/11/27 Python
python如何实现复制目录到指定目录
2020/02/13 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
Oracle的内存结构(Memory structures)
2015/06/10 面试题
UNIX文件类型
2013/08/29 面试题
银行批评与自我批评
2014/02/10 职场文书
保健品市场营销方案
2014/03/31 职场文书
2014年高数考试作弊检讨书
2014/12/14 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书