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
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

原文地址:https://www.cnblogs.com/fengff/p/10192422.html

时间: 2024-10-18 11:39:28

Arrow-一个最好用的日期时间Python处理库的相关文章

date_default_timezone_get() — 取得一个脚本中所有日期时间函数所使用的默认时区

语法: string date_default_timezone_get ( void ) 本函数返回默认时区,使用如下"假定"的顺序: 用 date_default_timezone_set() 函数设定的时区(如果设定了的话) 仅仅在 PHP 5.4.0 之前: TZ 环境变量(如果非空) date.timezone 配置选项(如果设定了的话) 仅仅在 PHP 5.4.0 之前: 查询操作系统主机 (如果操作系统支持并允许). This uses an algorithm that

一个特牛的日期时间判断正则表达式

这里是判断YYYY-MM-DD这种格式的,基本上把闰年和2月等的情况都考虑进去了,不过我已经忘了在哪里找到的. ^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6

Javascript日期时间表现形式互转

在一门语言里,一个日期时间一定有3种表现形式,字符串(如2010-11-11 05:07:08),Long型(一般是1970年1月1日至今的毫秒数),内置对象(在Javascript中就是Date): 那么日期时间操作很常用的一个就是上述三种表现形式的互转和格式化(各种格式的字符串): moment是Javascript的一个日期时间库,使用它可以很方便的实现上述三种表现形式的互转和字符串表现形式的格式化. 日期时间类型的三种表现形式,字符串是给人读的,Long在传递信息时速度更快,内置对象起到

[转] Java8 日期/时间(Date Time)API指南

[From] http://www.importnew.com/14140.html Java 8日期/时间( Date/Time)API是开发人员最受追捧的变化之一,Java从一开始就没有对日期时间处理的一致性方法,因此日期/时间API也是除Java核心API以外另一项倍受欢迎的内容. 为什么我们需要新的Java日期/时间API? 在开始研究Java 8日期/时间API之前,让我们先来看一下为什么我们需要这样一个新的API.在Java中,现有的与日期和时间相关的类存在诸多问题,其中有: Jav

Python常用库大全

环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex – 可以在虚拟环境中执行命令. virtualenv – 创建独立 Python 环境的工具. virtualenvwrapper- virtualenv 的一组扩展. 包管理 管理包和依赖的工具. pip – Python 包和依赖关系管理工具. pip-tools – 保证 Python 包依赖关系更新的一组工具. conda

arrow python处理日期时间

Python针对日期时间的处理提供了大量的package,类和方法,但在可用性上来看非常繁琐和麻烦 第三方库Arrow提供了一个合理的.人性化的方法来创建.操作.格式转换的日期,时间,和时间戳,帮助我们使用较少的导入和更少的代码来处理日期和时间. pip install arrow 获取当前时间    arrow.utcnow(), arrow.now() >>> arrow.utcnow() <Arrow [2013-05-07T04:20:39.369271+00:00]>

送你6 个 Python 的日期时间库!让你的Python更加得心应手!

内建的 datetime 模块 让我们看看其他库是如何处理这种转换的. Dateutil 通过 Arrow datetime 类的实例,你可以访问 Arrow 的其他有用方法.例如,它的humanize()方法将日期时间翻译成人类可读的短语,就像这样: 由于 Maya 与 datetime 库中很多有用的方法重叠,因此它可以使用 MayaDT 类的实例执行诸如使用 slang_time() 方法将时间偏移量转换为纯文本语言,并将日期时间间隔保存在单个类的实例中.以下是如何使用 Maya 将日期时

【Python】随机模块random &amp; 日期时间のtime&amp;&amp;datetime

■ random 顾名思义,random提供了python中关于模拟随机的一些方法.这些方法都一看就懂的,不多说了: random.random() 返回0<n<=1的随机实数 random.uniform(a,b) 返回a<n<=b的随机实数 random.randrange([start],stop,[step]) 返回序列range(start,stop,step)中随机一项 random.choice(seq) 返回序列中随机一项 random.sample(seq,n)

Python日期时间函数处理

所有日期.时间的 api 都在datetime模块内. 1 日期的格式化输出 datetime => string import datetime now = datetime.datetime.now() now.strftime('%Y-%m-%d %H:%M:%S') 输出 '2015-04-07 19:11:21' strftime是datetime类的实例方法. string => datetime import datetime t_str = '2015-04-07 19:11: