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教程之全局变量用法
Jun 27 Python
Python 多线程实例详解
Mar 25 Python
Python打印“菱形”星号代码方法
Feb 05 Python
python绘制评估优化算法性能的测试函数
Jun 25 Python
django-allauth入门学习和使用详解
Jul 03 Python
Python3分析处理声音数据的例子
Aug 27 Python
Python Des加密解密如何实现软件注册码机器码
Jan 08 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
Jan 21 Python
django的模型类管理器——数据库操作的封装详解
Apr 01 Python
TensorFlow实现批量归一化操作的示例
Apr 22 Python
Python通过Pillow实现图片对比
Apr 29 Python
Python类绑定方法及非绑定方法实例解析
Oct 09 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中隐形字符65279(utf-8的BOM头)问题
2014/08/16 PHP
项目中应用Redis+Php的场景
2016/05/22 PHP
List Information About the Binary Files Used by an Application
2007/06/11 Javascript
原生js 秒表实现代码
2012/07/24 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
JQuery实现鼠标移动到图片上显示边框效果
2014/01/09 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
2014/06/10 Javascript
jQuery操作cookie方法实例教程
2014/11/25 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
2015/09/16 Javascript
JS实现动态增加和删除li标签行的实例代码
2016/10/16 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
2017/03/10 Javascript
layui table复选框禁止某几条勾选的实例
2019/09/20 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
vue中el-input绑定键盘按键(按键修饰符)
2020/07/22 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
Python缩进和冒号详解
2016/06/01 Python
Python数据结构与算法之列表(链表,linked list)简单实现
2017/10/30 Python
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
Python socket模块ftp传输文件过程解析
2019/11/05 Python
python range实例用法分享
2020/02/06 Python
python3 配置logging日志类的操作
2020/04/08 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
技校学生个人职业生涯规划范文
2014/03/03 职场文书
自动一体化专业求职信
2014/03/15 职场文书
三人合伙协议书范本
2014/10/29 职场文书
关于长城的导游词
2015/01/30 职场文书
民事申诉状范本
2015/05/20 职场文书
2015中学学校工作总结
2015/07/20 职场文书
同事欢送会致辞
2015/07/31 职场文书
小学教师教学随笔
2015/08/14 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书
php引用传递
2021/04/01 PHP
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL