-Menü

Beiträge anzeigen

Dieser Abschnitt erlaubt es Ihnen, alle Beiträge anzusehen, die von diesem Mitglied geschrieben wurden. Beachten Sie, dass Sie nur Beiträge sehen können, die in Teilen des Forums geschrieben wurden, auf die Sie aktuell Zugriff haben.

Beiträge anzeigen-Menü

Beiträge - TimoH

#1
Hallo,
Besagter Baustein bietet eine Umrechnung meiner UTC Zeit zu meiner Lokalzeit sowie einen Sommer/Wintermodus.

tmp := TIME_ZONE_OFFSET * 60 + BOOL_TO_INT(DST_ENABLE AND DST(UTC)) * 3600;
IF tmp < 0 THEN
   tmp := ABS(tmp);
   UTC_TO_LTIME := DWORD_TO_DT(DT_TO_DWORD(UTC) -  INT_TO_DWORD(tmp));
ELSE
   UTC_TO_LTIME := DWORD_TO_DT(DT_TO_DWORD(UTC) +  INT_TO_DWORD(tmp));
END_IF;

So wie ich den Baustein verstehe kann ich einen Offset in Minuten dazurechnen sowie die Sommer/Winterzeit ein und ausschalten.
Das klappt auch soweit, aber ich habe das Problem, dass der Baustein den Offseteingang in Minuten hat und durch die Multiplikation mit 60 daraus die Sekunden bildet. Wenn ich aber eine Minutenzahl über 546 eingebe, dann sprengt die Rechnung den Maximalwert der internen INT Variable.
Nahe Neuseeland komme ich aber auf einen OFFSET von +/-13 Stunden zur UTC, also bis zu 780 Minuten.

Ich kann natürlich den Offset selber schreiben, aber vielleicht kann mir ja wer kurz erklären, wo mein Denkfehler ist, dass dieser Baustein tmp und den Offset als INT verwendet. Ich konnte nichts finden, dass dieser Bug irgendwo gemeldet ist.