This evening I went onto HSBC Bermuda's internet banking website to pay my cable TV bill. After choosing the payee, entering the amount, and clicking "Pay" - leaving the date as its default value - I was presented with this:
Right now it's 9.45pm on Thursday 16 May. The date in the date field is 16 May. So the error message - "pay date 1 should not be earlier than today" - isn't even accurate.
But what's really frustrating about this error is: if 16 May isn't a valid payment date (presumably because I have now passed the cutoff time for the payment to be processed today), why didn't the date field default to 17 May instead?
(The other problem with this error message is where it is. Even though the message is in red, it always takes me a moment or two to notice it. It would be much better if it had been placed next to the date field that's the source of the problem.)
The purpose of defaults is to make life easier for your users, to help them complete their tasks more quickly. Wherever possible, you should set them, choosing values that are appropriate for the most common use case of your interface. However, never set a default value that could actually cause an error - better to not set a default at all.