Arrow-一个最好用的日期时间Python处理库
https://www.jianshu.com/p/c878bb1c48c1
写过Python程序的人大都知道,Python日期和时间的处理非常繁琐和麻烦,主要有以下几个问题:
- 有众多的package,类和方法,包括time,datetime,pytz等等
- 经常需要各种转换,比如时间戳,structtime,时间字符串之间相互转换,localtime和utctime的转换
- 难以记忆,有违人性的时间格式化字符串%Y %M %m %D %d
基于以上几点,每次做时间处理的时候总是需要翻看以前的代码或者文档,可见此处Python做的有多烂,好了废话不多说,今天给大家介绍的这个arrow极大地解放了我等Python程序员的脑容量。
安装
pip install arrow
使用
获取当前时间
In [13]: import arrow
In [14]: t = arrow.utcnow()
In [15]: t
Out[15]: <Arrow [2017-02-01T08:30:37.627622+00:00]>
In [19]: arrow.now()
Out[19]: <Arrow [2017-02-01T16:32:02.857411+08:00]>
通过utcnow()和now()分别获取了utc时间和local时间,最终获取的是一个Arrow时间对象,通过这个对象我们可以做各种时间转换,后边会看到。
时间形式转换
我们经常需要转换时间对象,比如转换称timestamp,有时需要转换成特定格式的时间字符串。
- 转换成timestamp
In [13]: import arrow
In [14]: t = arrow.utcnow()
In [16]: t.timestamp
Out[16]: 1485937837
- 转换成时间字符串
In [23]: t = arrow.now()
In [24]: t.format()
Out[24]: u'2017-02-01 17:00:42+08:00'
In [25]: t.format("YYYY-MM-DD HH:mm")
Out[25]: u'2017-02-01 17:00'
怎么样?是不是感觉很简单,心里感觉轻舒了一口气!这里可以注意到格式化字符串非常人性化便于记忆,对不对?完整的时间格式字符串参见这里
- 从字符串转换成Arrow对象
In [20]: arrow.get("2017-01-20 11:30", "YYYY-MM-DD HH:mm")
Out[20]: <Arrow [2017-01-20T11:30:00+00:00]>
- 从时间戳转化为Arrow对象
In [26]: arrow.get("1485937858.659424")
Out[26]: <Arrow [2017-02-01T08:30:58.659424+00:00]>
In [27]: arrow.get(1485937858.659424)
Out[27]: <Arrow [2017-02-01T08:30:58.659424+00:00]>
注意这里无论传递的是时间戳字符串还是float类型的时间戳都可以进行转化,很人性有木有?
- 直接生成Arrow对象
In [28]: arrow.Arrow(2017, 2, 1)
Out[28]: <Arrow [2017-02-01T00:00:00+00:00]>
In [29]: arrow.get(2017, 2, 1)
Out[29]: <Arrow [2017-02-01T00:00:00+00:00]>
时间推移
时间推移就是要获取某个时间之前的时间或者之后的时间,比如要获取相对于当前时间前一天的时间。
In [30]: t = arrow.now()
In [31]: t
Out[31]: <Arrow [2017-02-01T17:19:19.933507+08:00]>
In [33]: t.shift(days=-1) # 前一天
Out[33]: <Arrow [2017-01-31T17:19:19.933507+08:00]>
In [34]: t.shift(weeks=-1) # 前一周
Out[34]: <Arrow [2017-01-25T17:19:19.933507+08:00]>
In [35]: t.shift(months=-2) # 前两个月
Out[35]: <Arrow [2016-12-01T17:19:19.933507+08:00]>
In [37]: t.shift(years=1) # 明年
Out[37]: <Arrow [2018-02-01T17:19:19.933507+08:00]>
看是不是很简单,比用timedelta要简单明了多了,是不是?
更多请参考官方文档和Github
官方文档
Github
顺便说一句点赞是一种美德,Arrow第4000个赞就是我点的,哈哈。如果你觉的我的文章有帮助,也赶紧点个赞吧!
作者:geekpy
链接:https://www.jianshu.com/p/c878bb1c48c1
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
Arrow-一个最好用的日期时间Python处理库的更多相关文章
- paip.日期时间操作以及时间戳uapi php java python 总结
paip.日期时间操作以及时间戳uapi php java python 总结 ///uapi Date 函数 | Day 函数 | Hour 函数 | Minute 函数 | Month 函数 | ...
- Python与SQLite日期时间函数的使法
SQLite的时间函数跟Python的时间函数有些许差别,所以稍做记录,供自己以后查询. 网上有将SQLite官方WIKI内容翻译成中文的文章,大家有兴趣可以搜索一下,我这里单纯记录一下个人比较常用的 ...
- Python入门系列(八)日期时间、数学、json
日期时间 Python中的日期本身不是数据类型,但我们可以导入一个名为datetime的模块,将日期作为日期对象使用. import datetime x = datetime.datetime.no ...
- 【转】JAVA 8 日期/时间(Date Time)API指南
前言 本来想写下Java 8的日期/时间API,发现已经有篇不错的文章了,那就直接转载吧~ PS:主要内容没变,做了部分修改. 原文链接: journaldev 翻译: ImportNew.com - ...
- Javascript 日期时间格式正则
因为Javascript的日期格式判断可能因浏览器的版本有所不同,所以用正则判断会比较好,这里备注一个正则用来判断日期时间的格式: ^(?=\d)(?:(?!(?:1582(?:\.|-|\/)10( ...
- 【Bootstrap】bootstrap-datetimepicker日期时间插件
[bootstrap-datetimepicker] datetimepicker是一个比较方便的日期时间插件.有了这个之后,我们可以在类似于表单的地方提供一个友好的日期(时间)输入功能.官方文档:[ ...
- ASP.NET MVC下使用AngularJs语言(九):日期时间处理与显示
当在angularjs去显示一个时间时,如原原本本去显示这个值,它将显示一个怪怪的字符串,其实它就是被系列化json之后的字符串.如:一个空值显示为日期时间: 如果非空值显示为日期时间的情形: 为了能 ...
- Java8学习笔记(九)--日期/时间(Date Time)API指南
Java 8日期/时间( Date/Time)API是开发人员最受追捧的变化之一,Java从一开始就没有对日期时间处理的一致性方法,因此日期/时间API也是除Java核心API以外另一项倍受欢迎的内容 ...
- Laravel 日期时间处理包 Carbon 的应用
在编写 PHP 应用时经常需要处理日期和时间,这篇文章带你了解一下 Carbon – 继承自 PHP DateTime 类的 API 扩展,它使得处理日期和时间更加简单.Laravel 中默认使用的时 ...
随机推荐
- PHP代码审计笔记--任意文件下载漏洞
在文件下载操作中,文件名及路径由客户端传入的参数控制,并且未进行有效的过滤,导致用户可恶意下载任意文件. 0x01 客户端下载 常见于系统中存在文件(附件/文档等资源)下载的地方. 漏洞示例代码: ...
- ubuntu 手动安装mysql
申请了一台云主机,需要手动安装所有环境,今天将mysql安装过程记下. 安装mysqla. 下载不了gcc, 需要先运行apt-get updateb. cmake报错,每次要先删除cmakeCach ...
- AngularJS的初步学习(1)
AngularJS 是一个Javascript框架.它可通过 <script> 标签添加到 HTML 页面.AngularJS 通过 指令 扩展了 HTML,且通过 表达式绑定数据到 HT ...
- 【整理】LINUX下使用CMAKE安装MYSQL
原文地址:http://www.cppblog.com/issay789/archive/2013/01/05/196967.html 一.安装 m4 下载地址: http://files.w3pc. ...
- Java网络编程之TCP通信
一.概述 Socket类是Java执行客户端TCP操作的基础类,这个类本身使用代码通过主机操作系统的本地TCP栈进行通信.Socket类的方法会建立和销毁连接,设置各种Socket选项. Server ...
- 【变态问题】在发现“XXXX”类型前实体框架已使用默认 DbConfiguration 实例。
今天在调试MVC反射调用EF写的dll 一直报错如下: 在发现“VipHallDbConfiguration”类型前实体框架已使用默认 DbConfiguration 实例.“VipHallDbCon ...
- 【推荐系统论文笔记】Introduction To Recommender Systems: Algorithms and Evaluation
这篇论文比较短,正如题目所说,主要还是简单地介绍了一下推荐系统的一些算法以及评估的方法. 推荐系统之前是基于关键字信息的过滤系统,后来发展成为协同过滤系统,解决了两个问题:1.通过人工审核去评价那些具 ...
- html2canvas - 项目中遇到的那些坑点汇总(更新中...)
截图模糊 原理就是讲canvas画布的width和height放大两倍. 后来学习canvas的时候,才了解到这种写法不同于css的宽高设置, 因为css里的只是展示画布显示的大小,不像这样是c ...
- Webpack 备忘录
Webpack 属于在项目中配置一次就很少改动的那种工具,但这样就导致新项目再配置 Webpack 时会有些生疏,所以将 Webpack 核心概念及常用配置记录如下. 1)核心概念 Webpack 4 ...
- C#串口介绍以及简单串口通信程序设计实现
C#串口介绍以及简单串口通信程序设计实现 周末,没事干,写个简单的串口通信工具,也算是本周末曾来过,废话不多,直接到主题 串口介绍 串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口) ...