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使用ftplib实现简易FTP客户端的方法
Jun 03 Python
Python找出9个连续的空闲端口
Feb 01 Python
django的model操作汇整详解
Jul 26 Python
Python解析多帧dicom数据详解
Jan 13 Python
python中count函数简单的实例讲解
Feb 06 Python
详解Python中的分支和循环结构
Feb 11 Python
Python异常原理及异常捕捉实现过程解析
Mar 25 Python
Python使用configparser读取ini配置文件
May 25 Python
python3 使用ssh隧道连接mysql的操作
Dec 05 Python
python urllib和urllib3知识点总结
Feb 08 Python
python 开心网和豆瓣日记爬取的小爬虫
May 29 Python
python 实现两个变量值进行交换的n种操作
Jun 02 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
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
Laravel关系模型指定条件查询方法
2019/10/10 PHP
用js实现手把手教你月入万刀(转贴)
2007/11/07 Javascript
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
2016/01/08 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
JS限制输入框输入的实现代码
2018/07/02 Javascript
React优化子组件render的使用
2019/05/12 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
详解为什么Vue中的v-if和v-for不建议一起用
2021/01/13 Vue.js
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
Python中使用bidict模块双向字典结构的奇技淫巧
2016/07/12 Python
python实现斐波那契数列的方法示例
2017/01/12 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
Python金融数据可视化汇总
2017/11/17 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
如何使用python代码操作git代码
2020/02/29 Python
jupyter notebook实现显示行号
2020/04/13 Python
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
入党积极分子思想汇报范文
2014/01/05 职场文书
学校督导评估方案
2014/06/10 职场文书
个人总结与自我评价
2014/09/18 职场文书
城管个人总结
2015/02/28 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL