datetimefield: fix changing date to end of month from short months
When selecting a new date, we get a date object from the currently
selected date before the change. If that month has less days than what
was selected for the new month, `setDate` will wrap that to the
following month since the old month is still selected there.
For example:
select any date in april (has 30 days)
then select the 31th of january
this will actually select the 1st of january since we first get