在数据处理中,我们经常会碰到对时间格式化的问题,需要把一定的格式转换为标准的格式,需要处理一段时间的数据,在这个过程中,我们之前使用的都是python中的标准库datetime
,但是它并没有提供一些常见的操作,这里介绍一个日期处理的第三方优秀库pytime
。
安装
库的地址在:
https://github.com/shinux/PyTime
安装时也非常的简单:
pip install pytime
时间格式化
对于时间格式的处理是在网络数据处理中一个重要的内容,我们可以使用datetime
进行处理,但pytime
为我们提供了很多的格式,可以很方便的进行处理。
如下对时间格式的字符串进行格式化为datetime
:
>>>pytime.parse('April 3rd 2015')
datetime.date(2015, 4, 3)
>>>pytime.parse('Oct, 1st. 2015')
datetime.date(2015, 10, 1)
>>>pytime.parse('NOV21th2015')
datetime.date(2015, 11, 21)
>>>
>>>pytime.parse('2015517')
datetime.date(2015, 5, 17)
>>>
>>>pytime.parse('5/17/15')
datetime.date(2015, 5, 17)
>>>
>>>pytime.parse('92-11-2')
datetime.date(1992, 11, 2)
>>>
对unix时间格式进行处理:
>>> pytime.parse(1536046253)
datetime.datetime(2018, 9, 4, 15, 30, 53)
在当前时间中的时间差
在网页或者客户端中,经常会出现这样的时间描述,几天前,几分钟前,但我们需要知道真正的时间是在什么时候,pytime
支持把这种格式的时间,直接转换为真实时间。
>>> pytime.before(datetime.now(),diff='2minu').strftime("%Y-%m-%d %H:%M:%S")
'2018-09-04 15:16:59'
>>> pytime.before(datetime.now(),diff='2d').strftime("%Y-%m-%d %H:%M:%S")
'2018-09-02 15:38:01'
同样的也用after
的操作。
生成一段连续的时间段
在数据处理中,经常需要按照天为单位计算一段时间的活跃数据,在这个过程中,需要先生成一段时间的数据:
如下生成 '2018-8-1’到 '2018-9-1’之间的数据:
>>> pytime.daysrange('2018-8-1', '2018-9-1')
[datetime.date(2018, 9, 1), datetime.date(2018, 8, 31), datetime.date(2018, 8, 30), datetime.date(2018, 8, 29), datetime.date(2018, 8, 28), datetime.date(2018, 8, 27), datetime.date(2018, 8, 26), datetime.date(2018, 8, 25), datetime.date(2018, 8, 24), datetime.date(2018, 8, 23), datetime.date(2018, 8, 22), datetime.date(2018, 8, 21), datetime.date(2018, 8, 20), datetime.date(2018, 8, 19), datetime.date(2018, 8, 18), datetime.date(2018, 8, 17), datetime.date(2018, 8, 16), datetime.date(2018, 8, 15), datetime.date(2018, 8, 14), datetime.date(2018, 8, 13), datetime.date(2018, 8, 12), datetime.date(2018, 8, 11), datetime.date(2018, 8, 10), datetime.date(2018, 8, 9), datetime.date(2018, 8, 8), datetime.date(2018, 8, 7), datetime.date(2018, 8, 6), datetime.date(2018, 8, 5), datetime.date(2018, 8, 4), datetime.date(2018, 8, 3), datetime.date(2018, 8, 2), datetime.date(2018, 8, 1)]
同样的生成 一个礼拜,一个月的数据:
>>>pytime.this_week()
(datetime.date(2015, 5, 11), datetime.date(2015, 5, 18))
>>>pytime.next_week('2015-6-14') # 2015-6-14's next week for script
(datetime.date(2015, 6, 15), datetime.date(2015, 6, 23))
>>>pytime.last_week(pytime.mother(2013), True) # 2013 Mother's Day's last week
(datetime.date(2013, 5, 13), datetime.date(2013, 5, 20))
>>>pytime.next_month('2015-10-1')
(datetime.date(2015, 11, 1), datetime.date(2015, 12, 1))
生成重要节日的日期
>>>pytime.father() # Father's Day
datetime.date(2015, 6, 21)
>>>
>>>pytime.mother(2016) # 2016 Mother's Day
datetime.date(2016, 5, 8)
>>>
>>>pytime.easter(1999) # 1999 Easter
datetime.date(1999, 4, 4)
对日期的处理,还需要做很多的事情,pytime
帮我们做了非常的多东西, 如果有一些特殊的需要,同样的可以在pytime
的基础上继续进行扩展。