fuzzy timestamp parsing with Python

2019-01-09 11:02发布

问题:

Is there a Python module to interpret fuzzy timestamps like the date command in unix:

> date -d "2 minutes ago"
Tue Aug 11 16:24:05 EST 2009

The closest I have found so far is dateutil.parser, which fails for the above example.

thanks

回答1:

Check out this open source module: parsedatetime



回答2:

I have been dabbling with this using pyparsing - you can find my latest attempt here. It works for these test cases:

today
tomorrow
yesterday
in a couple of days
a couple of days from now
a couple of days from today
in a day
3 days ago
3 days from now
a day ago
now
10 minutes ago
10 minutes from now
in 10 minutes
in a minute
in a couple of minutes
20 seconds ago
in 30 seconds
20 seconds before noon
20 seconds before noon tomorrow
noon
midnight
noon tomorrow


回答3:

dateparser

Usage:

>>> import dateparser
>>> dateparser.parse('2 minutes ago')
datetime.datetime(2018, 11, 27, 13, 44, 54, 993170)
>>> dateparser.parse('yesterday at 15:12')
datetime.datetime(2018, 11, 26, 15, 12)