Natural language date parser

I’d like to convert human entered text strings, such as “next Monday”, “two weeks ago”, “four months from today”, or “one day, 3 hours and five minutes” to the corresponding representational time stamp. Is there already a good way to do this, or will I be writing a custom library to handle this type of ‘data’ conversion?

(Disclaimer: I understand the usability implications. They’re null. :D)

Thanks!