Re: [Tiki-devel] Sorry, timezones again
Victor Emanouilov via TikiWiki-devel <[email protected]>
| Newsgroups | gmane.comp.cms.tiki.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi Jonny,
I'd rather not change that function. Can you check my 1 week old commit
here:
https://gitlab.com/tikiwiki/tiki/-/commit/02307e79b8912b36abe1e6b9da749e8961a7668c
It solves the DST issue in the JsCalendar tracker field and I think the
same is needed in the calendar controller. The problem is that
jscalendar smarty function (which is used by both the tracker field and
calendar and I believe a bunch of other places) was using only
browser-based timezone offset which is different when DST kicks in. The
fix contains both - the timezone offset and the time zone name. This
will make sure time will be correct no matter if DST is on or off.
However, we need backend handling code to actually use the time zone
name. See the additional code in JsCalendar::getFieldData method. I
think similar code is needed when saving a calendar event timestamp
which looks up tzoffset.
HTH,
Victor
On 3/18/22 1:46 PM, Jonny Bradley via TikiWiki-devel wrote:
> Hi all, mostly Victor i think, but for general discussion...
>
> I have another couple of issues with timezones in calendars, quite easily reproducible here for me... i'm in GMT Europe/London zone, and my php says default timezone is UTC and the tiki is set to London and "automatically detected time zone" which also is Europe/London.
>
> If i create a calendar event for after 27th March (when our clocks go forward to British Summer Time/BST) at 12:00 noon, it shows as being 13:00, so definitely incorrect. If i apply the patch below open \TikiLib::date_format, which combines creating the "tikidate" and setting the timezone at the same time, it all looks ok... so should i commit that? This function is used 220 times in tiki at least, and timezones scare me!
>
> A side effect of this is that i have a recurring weekly noon event that starts in GMT but continues into "summer time" and with this patch the BST ones show as being at 11:00, so they would need correcting, because they looked ok before...
>
> I know i'm out of my depth here, so would like some reassurance or pointers in the right direction please :)
>
> TIA
>
> jonny
> ---
>
>
>
> Index: lib/tikilib.php
> IDEA additional info:
> Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
> <+>UTF-8
> ===================================================================
> diff --git a/lib/tikilib.php b/lib/tikilib.php
> --- a/lib/tikilib.php (revision 632dbe0774db70d405de13f743c0fe35a697dd9d)
> +++ b/lib/tikilib.php (date 1647603391982)
> @@ -5672,19 +5672,13 @@
> }
>
> $tikidate = TikiLib::lib('tikidate');
> + $tz = $tikilib->get_display_timezone($_user);
> try {
> - $tikidate->setDate($timestamp, 'UTC');
> + $tikidate->setDate($timestamp, $tz);
> } catch (Exception $e) {
> return $e->getMessage();
> }
>
> - $tz = $tikilib->get_display_timezone($_user);
> -
> - // If user timezone is not also in UTC, convert the date
> - if ($tz != 'UTC') {
> - $tikidate->setTZbyID($tz);
> - }
> -
> $return = $tikidate->format($format, $is_strftime_format);
> if ($is_strftime_format) {
> $currentUserDateByFormat[ $format . $timestamp ] = $return;
>
>
>
> _______________________________________________
> TikiWiki-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/tikiwiki-devel