On Jan 8, 7:57 pm, Ben Finney <[EMAIL PROTECTED]> wrote: > "Daniel Fetchinson" <[EMAIL PROTECTED]> writes: > > I'm guessing this feature is needed so often in so many projects that > > it has been implemented already by several people. Does anyone know of > > such a stand alone module? > > The 'python-dateutil' library allows easy *programmatic* manipulation > of relative date expressions, but not in natural language. >
I think the OP was looking for presentation of dates in a friendly format, not parsing, but it so happens that I started such a parser with pyparsing about a month ago, and was about 1/2 finished with it when I saw your post. I dredged up the code from where it was, and have a semi-working version now. NLTK is not needed, as you can constrain and structure the vocabulary surprisingly well. Probably trickier is to establish your own conventions for the meanings of "now", "today", etc. (For instance, I interpret "today" as "the current date, at time 00:00:00".) "A day from now" is "the current time, with tomorrow's date". "In a day" could go either way - interpret like "tomorrow" or like "a day from now." But once these are settled, a reasonable grammar can be composed. My first version is fairly brute force and hackish, but I've gotten some insights into the date arithmetic, and which words behave much like operators. Of course, this is all driven around English and English idioms - converting to another language would probably be starting from scratch. Here are the tests for this first version (these tests all pass): 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 You can see the results and the parser code at: http://pyparsing.wikispaces.com/UnderDevelopment. -- Paul -- http://mail.python.org/mailman/listinfo/python-list