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 16 Python
django 解决manage.py migrate无效的问题
May 27 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
Oct 22 Python
python递归法实现简易连连看小游戏
Mar 25 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
PYTHON实现SIGN签名的过程解析
Oct 28 Python
Python使用matplotlib 画矩形的三种方式分析
Oct 31 Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 Python
python如何删除文件、目录
Jun 23 Python
python 三种方法实现对Excel表格的读写
Nov 19 Python
flask框架中的cookie和session使用
Jan 31 Python
Python移位密码、仿射变换解密实例代码
Jun 27 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几个数学计算的内部函数学习整理
2011/08/06 PHP
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
php跨服务器访问方法小结
2015/05/12 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
2010/12/28 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
解决js下referer兼容各大浏览器的方法
2014/11/03 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
2017/03/13 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
Python中的多行注释文档编写风格汇总
2016/06/16 Python
python爬虫爬取网页表格数据
2018/03/07 Python
numpy.transpose对三维数组的转置方法
2018/04/17 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
python实现批量文件重命名
2019/10/31 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
500行python代码实现飞机大战
2020/04/24 Python
python的reverse函数翻转结果为None的问题
2020/05/11 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
对Pytorch 中的contiguous理解说明
2021/03/03 Python
用C#语言写出与SQLSERVER访问时的具体过程
2013/04/16 面试题
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
青蓝工程实施方案
2014/03/27 职场文书
合作协议书模板2014
2014/09/26 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
2016年班主任新年寄语
2015/08/18 职场文书