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的__builtin__模块中的一些要点知识
May 02 Python
python 简单的绘图工具turtle使用详解
Jun 21 Python
Sanic框架蓝图用法实例分析
Jul 17 Python
python实现n个数中选出m个数的方法
Nov 13 Python
python虚拟环境迁移方法
Jan 03 Python
Python Opencv提取图片中某种颜色组成的图形的方法
Sep 19 Python
Python FtpLib模块应用操作详解
Dec 12 Python
python 实现任务管理清单案例
Apr 25 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
Aug 31 Python
python rsa-oaep加密的示例代码
Sep 23 Python
python 利用toapi库自动生成api
Oct 19 Python
python 将html转换为pdf的几种方法
Dec 29 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
全国中波电台频率表
2020/03/11 无线电
php生成zip压缩文件的方法详解
2013/06/09 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
laravel 自定义常量的两种方案
2019/10/14 PHP
JSON JQUERY模板实现说明
2010/07/03 Javascript
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
js获取url中&quot;?&quot;后面的字串方法
2014/05/15 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
jQuery层级选择器_动力节点节点Java学院整理
2017/07/04 jQuery
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
JS高阶函数原理与用法实例分析
2019/01/15 Javascript
浅谈redux, koa, express 中间件实现对比解析
2019/05/23 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
python字符串连接方法分析
2016/04/12 Python
python去掉行尾的换行符方法
2017/01/04 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
python利用插值法对折线进行平滑曲线处理
2018/12/25 Python
python开发游戏的前期准备
2019/05/05 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
30行Python代码实现高分辨率图像导航的方法
2020/05/22 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
美国一家运动专业鞋类零售商:Warehouse Shoe Sale(WSS)
2018/03/28 全球购物
体育纪念品、亲笔签名的体育收藏品:Steiner Sports
2020/07/31 全球购物
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
全陪导游欢迎词
2014/01/17 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
大学信息公开实施方案
2014/03/09 职场文书
税务职业生涯规划书范文
2014/09/16 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
具结保证书范本
2015/05/11 职场文书
python - timeit 时间模块
2021/04/06 Python