While not exactly what you're asking for, this may be of use. There's a command 'org-schedule
in the package org-mode that has a really nice interface to choosing dates. The specific command that does it is 'org-read-date
, which understands many ways of representing the date, including:
+0 --> today
. --> today
+4d --> four days from today
+4 --> same as above
+2w --> two weeks from today
++5 --> five days from default date
+2tue --> second Tuesday from now.
If you're looking for an interactive way to specify dates with that handy syntactic sugar, that routine should fit the bill nicely. If you're looking for a programmatic solution, it looks as though the above command calls 'org-read-date-analyze
to do the leg work. Note: its usage is a little obscure (two of its arguments are never defined...), so if you can't figure it out directly, it might be worth sending mail to the org mailing list.