[TYPO3-core] RFC: #8746+#10033+#9676: Fixes for date/time fields issues (timezone and "d")

Ernesto Baschny [cron IT] ernst at cron-it.de
Mon Dec 29 16:25:50 CET 2008


Hi,

thanks for the quick review. Commited to trunk (rev. 4628) and TYPO3-4_2
(rev. 4629).

Cheers,
Ernesto


Ernesto Baschny [cron IT] wrote: on 29.12.2008 13:09:
> This is an SVN patch request.
> 
> Type: Bugfix
> 
> Bugtracker references:
> 1) http://bugs.typo3.org/view.php?id=10033 (the "d" issue)
> 2) http://bugs.typo3.org/view.php?id=8746 (the "+xx" timezone issue)
> 3) http://bugs.typo3.org/view.php?id=9676 (which I would close as it is
> not a bug)
> 
> Branches: TYPO3-4_2 and trunk
> 
> Problem(s):
> 
> On TCEmain forms with date/time fields, some client-side handling were
> buggy since 4.2.0:
> 
> 1) typing "d" in a date/time field used to get the current date. This
> now only works for the first time one enters a date in an empty field.
> After that, we instead get the last date entered.
> 
> 2) typing something like "d", "d+0", "d-10", or even just "+0" or "+1"
> on a datetime field and moving focus away we expect the calculated date
> with the current time. Instead we get the time shifted back to UTC (so
> -1 hour if we are at GMT+1).
> 
> 3) minor but very anoying long-standing issue (not related to the
> timezone issues): we couldn't just enter a "date" on a datetime-field.
> After this patch, it is now possible (hour will be "0:00").
> 
> 
> Solution:
> See attached patch. I moved all "client-timeshifting" situations to a
> new function (convertClientTimestampToUTC) so that we only have one
> place where the client's getTimezoneOffset is considered.
> 
> 
> Notes:
> Since TYPO3 4.2 we changed the handling of timezone: client converts to
> UTC before sending form data to server. Server converts from UTC to
> server-timezone before storing into database. This solved a lots of
> issues regarding server standing on different timezones than the client,
> but introduced some minor issues, from which hopefully the last two were
> fixed with this patch.
> 
> 
> How-to-reproduce:
> For your convenience I attached the extension "user_datetest" to
> bug#8746, which only creates a new table with all possible date/time
> fields in it.
> 
> Test the following:
> 1) create empty new record
> 
> 2) enter "d" on the datetime field, move focus away:
>   - expected: today with current time
>   - buggy: today, but with time shifted to UTC
> 
> 3) enter "d" on the date field, move focus away:
>   - expected: today
>   - buggy: if you happen to be on UTC+xx, date will be yesterday!
> 
> 4) enter "d+1" on the datetime field, move focus away:
>   - expected: tomorrow with current time
>   - buggy: tomorrow, but with time shifted to UTC
> 
> 5) enter "d" on the datetime field which already contains some day, move
> focus away:
>   - expected: date and time changed to "today"
>   - buggy: old datetime from field stays, no way to get back to "d"
> 
> 5) create empty new record
> 
> 6) enter "+0" on the datetime field, move focus away:
>   - same results as on step 2)
> 
> 7) enter "13:02 29-1-2008 +2" on the datetime field:
>   - expected is "13:02 31-1-2008". This actually works, but will fail
> with the patch from Martin Holz in bug#9676, so this is just for
> demonstration purposes that it still works after the patch
> 
> 8) enter "29-1-2008" on a datetime field:
>   - expected: "0:00 29-1-2008"
>   - buggy: last date+time we had in the field.
> 
> 
> Now apply the patch and try it out again. Note: As the .js file is
> changed, you need to force your browser to reload them after patching
> (SHIFT-reload on Firefox, CTRL-reload on IE).
> 
> Cheers,
> Ernesto
> 


More information about the TYPO3-team-core mailing list