写过Python程序的人大都知道,Python日期和时间的处理非常繁琐和麻烦,主要有以下几个问题:
基于以上几点,每次做时间处理的时候总是需要翻看以前的代码或者文档,可见此处Python做的有多烂,好了废话不多说,今天给大家介绍的这个arrow极大地解放了我等Python程序员的脑容量。
pip install arrow
获取当前时间
In [13]: import arrow
In [14]: t = arrow.utcnow()
In [15]: t
Out[15]:
In [19]: arrow.now()
Out[19]:
通过utcnow()和now()分别获取了utc时间和local时间,最终获取的是一个Arrow时间对象,通过这个对象我们可以做各种时间转换,后边会看到。
时间形式转换
我们经常需要转换时间对象,比如转换称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'
怎么样?是不是感觉很简单,心里感觉轻舒了一口气!这里可以注意到格式化字符串非常人性化便于记忆,对不对?完整的时间格式字符串参见这里
In [20]: arrow.get("2017-01-20 11:30", "YYYY-MM-DD HH:mm")
Out[20]:
In [26]: arrow.get("1485937858.659424")
Out[26]:
In [27]: arrow.get(1485937858.659424)
Out[27]:
注意这里无论传递的是时间戳字符串还是float类型的时间戳都可以进行转化,很人性有木有?
In [28]: arrow.Arrow(2017, 2, 1)
Out[28]:
In [29]: arrow.get(2017, 2, 1)
Out[29]:
时间推移
时间推移就是要获取某个时间之前的时间或者之后的时间,比如要获取相对于当前时间前一天的时间。
In [30]: t = arrow.now()
In [31]: t
Out[31]:
In [33]: t.shift(days=-1) # 前一天
Out[33]:
In [34]: t.shift(weeks=-1) # 前一周
Out[34]:
In [35]: t.shift(months=-2) # 前两个月
Out[35]:
In [37]: t.shift(years=1) # 明年
Out[37]:
看是不是很简单,比用timedelta要简单明了多了