常用python自带时间处理模块
有一些情况下,datetime却并没有那么好用。比如:
1.创建日期时间范围
2.创建未固定的日期时间
3.检验两个日期时间的差值是否在一定的范围内。
dateutil模块
解析日期格式建议使用dateutil,不推荐使用datetime.datetime.strftime()。%Y 这种格式代表了某种具体的意义,但用着很麻烦。因此可以使用一个名为 dateutil 第三方包的 parser.parse() 函数实现自动转义,它几乎可以解析任何格式(这也可能会带来麻烦)。
>>> from dateutil.parser import parse
>>> parse('01-02-2010',dayfirst=True)
datetime.datetime(2010, 2, 1, 0, 0)>>> parse('01-02-2010')
datetime.datetime(2010, 1, 2, 0, 0)
>>> parse('55')
datetime.datetime(2055, 6, 17, 0, 0)
The dateutil module provides powerful extensions tothe standard datetime module, available in Python.
>>> from dateutil.relativedelta import *
>>>from dateutil.easter import *
>>>from dateutil.rrule import *
>>>from dateutil.parser import *
>>>from datetime import *
>>>now = parse("Sat Oct 11 17:13:46 UTC 2003")
>>>today = now.date()
>>>year = rrule(YEARLY,dtstart=now,bymonth=8,bymonthday=13,byweekday=FR)[0].year
>>>rdelta = relativedelta(easter(year), today)
>>>print("Today is:%s" % today)
Today is: 2003-10-11
>>>print("Year with next Aug 13th on a Friday is:%s" % year)
Year with next Aug 13th on a Friday is: 2004
>>>print("How far is the Easter of that year:%s" % rdelta)
How far is the Easter of that year: relativedelta(months=+6)
>>>print("And the Easter of that year is:%s" % (today+rdelta))
And the Easter of that year is: 2004-04-11
计算时间差的示例
其中中间lz加了一个timestamp的转换(为了输入到只接收整形数的函数中),直接不转换也可以。
fromdateutil.parser importparse
importdatetime
a ='Sat Jul 31 20:15:24 +0000 2011'b ='Sat Jul 30 20:07:44 +0000 2011'# print(parse(a))aa =datetime.datetime.timestamp(parse(a))
bb =datetime.datetime.timestamp(parse(b))
print(datetime.datetime.fromtimestamp(aa) -datetime.datetime.fromtimestamp(bb))
print((datetime.datetime.fromtimestamp(aa) -datetime.datetime.fromtimestamp(bb)).total_seconds() /3600)
[dateutil - powerful extensions to datetime]
Delorean:解决 Python 中有关日期处理的棘手问题的库
Delorean是一个非常酷的日期/时间库。这个项目由Mahdi Yusuf维护,类似JavaScript的moment,拥有非常完善的技术文档。
用它处理日期和时间非常方便。设置时区,截取到秒、分、小时,甚至使用特定步骤从一个日期进到另一个日期。文档里面有很多例子。
用Python处理时间有点痛苦。如果你用Python的标准时间库datetime,并且处理过时区,你会感到绝望。delorean提供了一个相比于datetime和pytz的更好的抽象,让你处理时间更容易。它有很多有用的处理时区的特性,标准化时区或者从一个时区改变到另外一个时区。
from delorean import Delorean
EST = "US/Eastern"
d = Delorean(timezone=EST)
其它时间相关的库
pytz python时区处理模块(同时也包括夏令时)。世界时区,使用tz database时区信息数据库。
arrow,更好的日期和时间处理Python库。
chronyk,一个Python 3版函数库,用于解析人写的时间和日期。
moment,类似Moment.js的日期/时间Python库。
radar,雷达,生成随机日期/时间。
sandglass(沙漏)** 是一个增强的、友好的时间处理库,目的是为了解放程序员的生产力。在python中有太多处理时间的库,datetime/date/time/calendar等等。需要记的细节太多,选择困难。而sandglass就是解决这个的青霉素。从各种麻烦的转换中解脱出来。只需记住 **Sandglass对象** 和 **ben()** 、 **tslice()** 、 **cronwalk()** 这几个主要的api即可。[sandglass 0.0.1]
Python日期时间处理: datestuff
when.py
友好的时间日期库
>>> import when
>>>when.timezone()
'Asia/Shanghai'
>>>when.today()
datetime.date(2013, 5, 14)
>>>when.tomorrow()
datetime.date(2013, 5, 15)
>>>when.now()
datetime.datetime(2013, 5, 14, 21, 2, 23, 78838)