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.
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.