在 Python 中解析人类可读的日期时间持续时间

bir*_*ilo 7 python datetime

许多常见的人类可读日期时间可以使用 进行解析datetime.strptime(),例如:

'15 March 2019 13:00'
Run Code Online (Sandbox Code Playgroud)

我知道有几个 Python 包可以将“模糊”人类可读的日期时间解析为 Python 日期时间对象,例如dateparserparsedatetime,它们可以解析字符串,例如:

'yesterday'
'next week'
Run Code Online (Sandbox Code Playgroud)

但是是否有一个 Python 库可以将常见的人类可读日期时间持续时间解析为开始和结束日期时间对象。例如:

'5 March 2019 13:00-18:30'
'5 March 2019 1:00-5:30pm'
'15-18 March 2019'
'2nd to 22nd March 2019'
Run Code Online (Sandbox Code Playgroud)

进入:

[datetime.datetime(2019, 3, 5, 13, 0), datetime.datetime(2019, 3, 5, 18, 30)]
[datetime.datetime(2019, 3, 5, 13, 0), datetime.datetime(2019, 3, 5, 18, 30)]
[datetime.datetime(2019, 3, 15, 0, 0), datetime.datetime(2019, 3, 18, 0, 0)]
[datetime.datetime(2019, 3, 2, 0, 0), datetime.datetime(2019, 3, 22, 0, 0)]
Run Code Online (Sandbox Code Playgroud)

或者采用如下字符串:

'15-17 March 2019'
Run Code Online (Sandbox Code Playgroud)

并返回包含日期的列表

[datetime.datetime(2019, 3, 15, 0, 0), datetime.datetime(2019, 3, 16, 0, 0), datetime.datetime(2019, 3, 17, 0, 0)]
Run Code Online (Sandbox Code Playgroud)

请注意,我感兴趣的是解析特定的日期和时间,而不是非基于日历的持续时间,例如'2 days''three weeks'