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正则表达式 re模块使用说明
May 19 Python
python中日期和时间格式化输出的方法小结
Mar 19 Python
详解Django框架中用context来解析模板的方法
Jul 20 Python
Python和JavaScript间代码转换的4个工具
Feb 22 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
Python使用装饰器模拟用户登陆验证功能示例
Aug 24 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
django-初始配置(纯手写)详解
Jul 30 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
Aug 31 Python
Python使用OpenPyXL处理Excel表格
Jul 02 Python
python 如何利用argparse解析命令行参数
Sep 11 Python
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
Apr 21 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
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
jqGrid读取选择的多行的某个属性代码
2014/05/18 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
2016/09/14 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
js实现楼层导航功能
2017/02/23 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
详解webpack自定义loader初探
2018/08/29 Javascript
对angular 监控数据模型变化的事件方法$watch详解
2018/10/09 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
小程序实现左滑删除的效果的实例代码
2020/10/19 Javascript
jquery实现广告上下滚动效果
2021/03/04 jQuery
[06:44]2014DOTA2国际邀请赛-钥匙体育馆开战 开幕式振奋人心
2014/07/19 DOTA
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
Python中pygame的mouse鼠标事件用法实例
2015/11/11 Python
Django中更改默认数据库为mysql的方法示例
2018/12/05 Python
用Python中的turtle模块画图两只小羊方法
2019/04/09 Python
推荐8款常用的Python GUI图形界面开发框架
2020/02/23 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
Python 数据分析之逐块读取文本的实现
2020/12/14 Python
python3中for循环踩过的坑记录
2020/12/14 Python
让IE6支持css3,让 IE7、IE8 都支持CSS3
2011/10/09 HTML / CSS
HTML5实现预览本地图片
2016/02/17 HTML / CSS
工商管理专业实习生自我鉴定
2013/09/29 职场文书
大学生自我评价怎样写好
2013/10/23 职场文书
岗位聘任书范文
2014/03/29 职场文书
社区优秀志愿者先进事迹
2014/05/09 职场文书
公司踏青活动方案
2014/08/16 职场文书
办公用房租赁协议书
2014/11/29 职场文书
教师节主持词开场白
2015/05/29 职场文书
会议开幕致辞怎么写
2016/03/03 职场文书
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python