@jack, regarding @seldon's issue, the problem with the datefield is that it stores the string representation (containing incomplete date information) instead of the actual Date object (which correctly encapsulates full date info after parseDate() is called) so a format like 'Y-m', while valid, will result in issues as mentioned by @seldon in post #1 because the day of the month will default to the current day when parsing the stored date string.
a correct implementation IMHO should simply store the Date object as the datefield's underlying value, and format it appropriately for display in the datefield's <input> element (the DateField will likely need to have getValue()/setValue() handling which is similar to the ComboBox's i.e. a separate display value + underlying value)
try for example the following datefield code:
and type in the following date strings (wait till the 30th of November, or adjust your system clock so the current day of month is 30):
format: 'Y-m', // display + parse format
altFormats: 'Y-m-d|d/m/Y' // acceptable parse formats
2008-12-31 // date string in Y-m-d format
02/02/2008 // date string in d/m/Y format