Autor Thema: Zeitzonenprobleme  (Gelesen 1187 mal)

Offline zweiundzwanzig

  • Full Member
  • ***
  • Beiträge: 160
Zeitzonenprobleme
« am: 09 Oktober 2022, 13:42:09 »
Ich nutze mehrere Calendar Module, die ein durch eine externe webanwendung generiertes ics file importieren.
Leider ist die definition der Zeiten dort so :
DTSTART;TZID=UTC:20221009T094500
DTEND;TZID=UTC:20221009T113000
also in UTC.

Wenn ich "get MyCalendar events format:full" mache werden die Zeiten nicht korrekt umgerechnet,Im Moment löse ich das mit onCreateEvent {$e->{end}= $e->{end}+7200 ;; $e->{start}= $e->{start}+7200 ;; $e->{alarm}= $e->{start}-7200} Also addiere ich auf den Start und das Ende die 2 Sunden Differenz zwischen UTC und lokaler Sommerzeit (und generiere dann noch unabhängg davon eine Alarmzeit).

Das finde ich nicht elegant weil ich das am 30. Oktober auf 1 Stunde ändern muss und im März zurück.

Geht das eleganter? Habe ich etwas übersehen?
« Letzte Änderung: 09 Oktober 2022, 14:43:45 von zweiundzwanzig »
2x MAX CuBe mit a-culf im Moritzbetrieb
1x MAX CuBe mit a-culf im Homematicbetrieb
60x MAX Heizkörperthermostat plus | 2x HM Schaltaktoren | 1x MAX Wandthermostat
1x FHEM Ubuntu Server auf VMWare
24 Räume, die durch ical Kalender geheizt werden

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18898
Antw:Zeitzonenprobleme
« Antwort #1 am: 09 Oktober 2022, 14:42:49 »
onCreateEvent {
my $nt = time;
my @lt = localtime($nt);
my $offset= _calctz($nt,@lt)*HOURSECONDS;
$e->{alarm}= $e->{start}; # durch das Vorziehen erspart man sich die Subtraktion des vorher zu {start} addierten Offsets ;)
$e->{start}= $e->{start}+$offset;
$e->{end}= $e->{end}+$offset;
}
-----------------------
Mach es möglichst simpel und mach es richtig,
dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!
Gefällt mir Gefällt mir x 1 Liste anzeigen