Date selection isn't easy...
This has been a peeve of mine for a long time. I've not found a decent calendar widget.
Generally, I prefer calendars to scrollers because:
- Using a scroller to select a date far in the future can be a real pain.
- Calendars provide a lot of valuable context (today's date, day of week, physical distance to the date, etc).
In my view UX designers chronically underestimate the microinteraction complexity of selecting dates. The #1 problem I observe is designers treating the date control like any other control (i.e. it has to be a small widget). To provide proper usability, the control needs:
- Easy to understand (clear affordance)
- Easy for novices to use
- Easy for experts to use with maximum productivity (i.e. selecting a date should be FAST)
- Large enough to present information clearly and promote usability (don't cram the dates into a small grid, forcing users to squint or struggle with thumb-clicking)
One design...
I've wanted this widget for a while but haven't found a decent implementation with all the features. Maybe someone out there can build one.
1. Use a text box with a large dropdown panel...
- This provides a clear and simple entry point to the widget (before the dropdown appears), with clear instruction to the user.
2. Provide both text and dropdown calendar panel
This gives users choices with how to enter a date. Experts can keep typing if they know what they want. Novices can use the graphical widget. Users who don't see the date on the dropdown (e.g. because it's too far in the future) can just type it in.
3. The text input should be freeform
...allowing users to enter dates in a variety of formats and shortcuts (e.g. 'tues'):
As always, the right widget depends on the specifics of your form/workflow, style, devices, etc. But I've wanted this kind of freeform widget for a while and all of the dozens of alternatives I've seen in practice have typically fallen short (usually in freeform parsing, but sometimes in the way the textbox synchronizes with the dropdown panel).