fpc/Lazarus: UTC-Umrechnungen liegen daneben

Gast #6646424
Lesenswert?

Hi zusammen,
ich habe ein Problem mit Uhrzeiten unter Lazarus/FPC: Die Umrechnung der 
Uhrzeit hakelt reproduzierbar abhängig von der Plattform.

3 Systeme im Einsatz:
a) PC mit Linux Mint 18
b) raspberry2 mit raspbian
c) raspberry3 mit osmc
Alle Systeme sind in der gleichen Zeitzone, alle haben die gleiche 
lokale Zeit.

Eigentlich will ich die aktuelle Uhrzeit als UTC an ein externes Gerät 
schicken. Lese ich die Zeit mit now() aus, kommt die aktuelle Uhrzeit 
auf allen Systemen korrekt. Sobald ich aber anfange, das mit 
DateUtils.LocalTimeToUniversal() umzurechnen, geht es drunter und 
drüber. PC liefert korrektes Ergebnis, raspberries liegen beide 4h 
daneben (=2x 2h Solldifferenz). Gleiches Problem mit nowUTC().
Also entweder ich bin zu doof, bei den raspberries mit dpkg-reconfigure 
tzdata richtig einzustellen (Europa->Berlin) oder ich sehe gerade den 
Wald vor lauter Offensichtlichkeiten nicht.

Habt ihr ähnliche Erfahrungen gemacht oder einen Lösungsansatz?
Mir wäre schon wichtig, daß der Code auf PC und raspberry gleich 
arbeitet, da das Programm später auf beiden Plattformen laufen soll.

Danke schon mal!

VG Gartenbahner
Gast #6647449
Lesenswert?

Hi foobar,
ich habe mir das mal durchgelesen, aber wirklich weitergeholfen hat es 
nicht.
Aber dafür habe ich jetzt die Lösung in den fpc-sources von dateutils 
gefunden :)

PC:
1
Function LocalTimeToUniversal(LT: TDateTime): TDateTime;
2
begin
3
  Result:=LocalTimeToUniversal(LT,GetLocalTimeOffset);
4
end;

raspberry:
1
Function LocalTimeToUniversal(LT: TDateTime): TDateTime;
2
begin
3
  Result:=LocalTimeToUniversal(LT,-GetLocalTimeOffset);
4
end;
beachte das Minus beim raspberry. Zumindest weiß ich jetzt, was ich 
umgehen muß. :)
VG Gartenbahner

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren