dateutil库很强大,可以:
1、计算日期差值
2、计算两个date或者datetime对象的差值
3、计算更灵活的时间规则
4、解析几乎任何字符串格式的日期
5、根据系统信息自动分析时区信息
需要注意的是,dateutil不是内置的库,需要我们手动安装。安装python-dateutil
parse模块
parse模块可以匹配几乎所有的时间字符串并将其转换为datetime对象。
举个例子
from dateutil.parser import parse
print(parse('Sat Oct 11 17:13:16 UTC 2003'))
print(parse('2018-08-20'))
print(parse('2018.8.20'))
print(parse('12:00:00'))
#fuzzy开启模糊匹配,自动过滤无法识别的时间日期字符
print(parse("this is the wonderful moment 21:00:00,I feel good", fuzzy=True))
如何在匹配的时候忽略时区呢?那就需要在需要匹配的字符串后面加上ignoretz=True
rrule模块
rrule模块可以计算并生成一些重复的时间规则,提供对iCalendar RFC中的一些标准的支持。
举个简单的例子。我们给出一个日期 2014年12月31日,我们需要计算包括它在内的往后4个有31号的月份,并输出具体是哪一天。
import pprint
from dateutil.rrule import rrule, MONTHLY
from datetime import datetime
start_date = datetime(2014, 12, 31)
l = list(rrule(freq=MONTHLY, count=4, dtstart=start_date))
pprint.pprint(l)
输出结果
[datetime.datetime(2014, 12, 31, 0, 0),
datetime.datetime(2015, 1, 31, 0, 0),
datetime.datetime(2015, 3, 31, 0, 0),
datetime.datetime(2015, 5, 31, 0, 0)]