Keep data entry free form when possible
Programmers are lazy! Let the computer work a little and consider not even having a specific date field for initial date entry. Google Calendar, when creating a new event, simply allows you to say:
- 4 July: Dinner at Joe's place
GC then figures it all out for you (including where), and, based on your user profile locale, will be intelligent about what 4/7: Dinner at Joe's place means. For subsequent editing, the GC calendar control is nice and easy to use. Consider the following and how easy this would be for users:
- next Thu
- in 4 hours
- in 2 weeks
And... SHOCK HORROR what happens if the user doesn't know?? I've not seen this much but why is this not an acceptable date entry for some circumstances:
I know this is scary :) But Tog On Software Design, Bruce Tognazzini (original author of Apple Human Interface Guidelines) describes User Experience implementation is a bit like a magic trick: 'an illusion': looks easy, but underneath, all sorts of insanity is going on.
I'd get the software to put an automatic reminder 1d before saying 'hey, around about now you wanted to do stuff'
Also, use context as much as poss:
... if you have contacts or a social graph this should be easy to figure out; if not, ask.
Consider more than one month
When having date ranges, consider that month boundaries are a real hassle for calendar views that show only one month. iCal on the Mac is neat in this way because you can show any number of months so you can easily check what the exact dates of 'between 2 and 3 weeks from now' mean.