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 socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 Python
Python格式化css文件的方法
Mar 10 Python
深入讨论Python函数的参数的默认值所引发的问题的原因
Mar 30 Python
Python3多进程 multiprocessing 模块实例详解
Jun 11 Python
python迭代器常见用法实例分析
Nov 22 Python
python求质数列表的例子
Nov 24 Python
python实现俄罗斯方块小游戏
Apr 24 Python
Python 如何对文件目录操作
Jul 10 Python
Python实现哲学家就餐问题实例代码
Nov 09 Python
python re的findall和finditer的区别详解
Nov 15 Python
Python中第三方库Faker的使用详解
Apr 02 Python
Python中request的基本使用解决乱码问题
Apr 12 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/10/11 PHP
php统计文章排行示例
2014/03/04 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
2014/07/18 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
2015/03/03 PHP
php生成txt文件实例代码介绍
2016/04/28 PHP
Laravel 数据库加密及数据库表前缀配置方法
2019/10/10 PHP
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
JS实现打字游戏
2019/12/17 Javascript
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
基于windows下pip安装python模块时报错总结
2018/06/12 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
scrapy中如何设置应用cookies的方法(3种)
2020/09/22 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
2020/12/07 Python
凯蒂·佩里个人女鞋品牌:Katy Perry Collections
2019/04/04 全球购物
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
护士自荐信
2013/10/25 职场文书
数控专业个人求职信范文
2014/02/05 职场文书
《二泉映月》教学反思
2014/04/15 职场文书
万能检讨书
2015/01/27 职场文书
2015年实习单位评语
2015/03/25 职场文书
同事欢送会致辞
2015/07/31 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技