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 相关文章推荐
Django与JS交互的示例代码
Aug 23 Python
python实现员工管理系统
Jan 11 Python
python+pandas+时间、日期以及时间序列处理方法
Jul 10 Python
解决新django中的path不能使用正则表达式的问题
Dec 18 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
Jul 11 Python
python正则-re的用法详解
Jul 28 Python
python随机数分布random均匀分布实例
Nov 27 Python
浅谈Django中的QueryDict元素为数组的坑
Mar 31 Python
keras的siamese(孪生网络)实现案例
Jun 12 Python
Python字典取键、值对的方法步骤
Sep 30 Python
用ldap作为django后端用户登录验证的实现
Dec 07 Python
如何利用python实现Simhash算法
Jun 28 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图片处理之图片背景、画布操作
2014/11/19 PHP
PHP、Python和Javascript的装饰器模式对比
2015/02/03 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
2016/05/03 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
Vue监听数据对象变化源码
2017/03/09 Javascript
使用JS组件实现带ToolTip验证框的实例代码
2017/08/23 Javascript
详解如何使用webpack在vue项目中写jsx语法
2017/11/08 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
node获取客户端ip功能简单示例
2019/08/24 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
微信小程序自定义顶部组件customHeader的示例代码
2020/06/03 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
python获取豆瓣电影简介代码分享
2014/01/16 Python
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
python getopt详解及简单实例
2016/12/30 Python
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
电焊工工作岗位职责
2014/02/06 职场文书
乡镇交通安全实施方案
2014/03/29 职场文书
合作经营协议书范本
2014/04/17 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python
Java实现带图形界面的聊天程序
2022/06/10 Java/Android