解析人类可读的相对时间

Chr*_*est 5 python time

我想解析诸如3 days agoin之类的人类术语python 2.7以获得等效的 timedelta 。

例如:

>>> relativetimeparer.parser('3 days ago')
datetime.timedelta(3)
Run Code Online (Sandbox Code Playgroud)

我已经尝试过该dateparser模块。

>>> import dateparser
>>> dateparser.parse('3 days ago')
datetime.datetime(2016, 8, 20, 2, 57, 23, 372538)
>>> datetime.now() - dateparser.parse('3 days ago')
datetime.timedelta(3, 35999, 999232)
Run Code Online (Sandbox Code Playgroud)

它直接解析相对时间,datetime而不选择返回timedelta. 它还似乎认为3天前实际上是3天零10小时前。所以它似乎也调用了我与格林威治的时区偏移(+10 小时)。

是否有更好的模块来解析人类可读的相对时间?

ken*_*ytm 5

您可以指定RELATIVE_BASE设置:

>>> now = datetime.datetime.now()
>>> res = dateparser.parse('3 days ago', settings={'RELATIVE_BASE': now})
>>> now - res
datetime.timedelta(3)
Run Code Online (Sandbox Code Playgroud)