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代码
Mar 13 Python
举例讲解Python设计模式编程中的访问者与观察者模式
Jan 26 Python
python读取二进制mnist实例详解
May 31 Python
python实现kMeans算法
Dec 21 Python
Linux系统(CentOS)下python2.7.10安装
Sep 26 Python
对pyqt5之menu和action的使用详解
Jun 20 Python
Python使用正则实现计算字符串算式
Dec 29 Python
浅谈keras中的目标函数和优化函数MSE用法
Jun 10 Python
Python通过队列来实现进程间通信的示例
Oct 14 Python
python 制作磁力搜索工具
Mar 04 Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 Python
基于Python实现射击小游戏的制作
Apr 06 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
计数器详细设计
2006/10/09 PHP
PHP学习笔记 IIS7下安装配置php环境
2012/10/29 PHP
php实现与erlang的二进制通讯实例解析
2014/07/23 PHP
YII框架关联查询操作示例
2019/04/29 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
学习ExtJS Panel常用方法
2009/10/07 Javascript
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
JavaScript中的getTime()方法使用详解
2015/06/10 Javascript
JavaScript调用客户端Java程序的方法
2015/07/27 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
JS返回顶部实例代码
2020/08/09 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
2019/08/27 jQuery
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
在 Django/Flask 开发服务器上使用 HTTPS
2014/07/03 Python
python通过ssh-powershell监控windows的方法
2015/06/02 Python
使用Python求解最大公约数的实现方法
2015/08/20 Python
通过Python实现自动填写调查问卷
2017/09/06 Python
Python框架Flask的基本数据库操作方法分析
2018/07/13 Python
python抖音表白程序源代码
2019/04/07 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
使用HTML5进行SVG矢量图形绘制的入门教程
2016/02/19 HTML / CSS
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
一套PHP的笔试题
2013/05/31 面试题
实体的生命周期
2013/08/31 面试题
文案策划求职信
2014/04/14 职场文书
PHP实现两种排课方式
2021/06/26 PHP