2016-08-01 26 views
-2

Ich habe ein Linx-basiertes System, wo wir keine Zeitzone der Uhrzeit festlegen können. Wer also Zeit auf diesem Gerät setzt, setzt seine Ortszeit. Jetzt habe ich eine Anforderung, wo ich die GMT-Zeit basierend auf der lokalen Zeit berechnen muss, die auf dem Gerät vorhanden war.Wie GMT Zeit basierend auf lokaler Zeit in C berechnet

Ich denke, ich muss die Eingabe der Zeitzone nehmen, die der Benutzer in einer Variablen befindet. Zum Beispiel Zeitzone = EST-5: 00EDT, was bedeutet, dass die Ortszeit 5 Stunden hinter der GMT-Zeit liegt.

Jetzt haben wir irgendwelche Funktionen in der Standard-C-Bibliothek, die die GMT-Zeit für mich berechnen wird, wenn ich den Offset passiere.

Jede Hilfe in dieser Hinsicht wird sehr geschätzt. Ich suchte im Internet und alles, was ich finden konnte, ist nur diese Funktionen im folgenden Link: http://linux.die.net/man/3/localtime_r. Ich konnte keine Funktion finden, die die Zeit basierend auf Offset berechnen kann.

Gibt es einen anderen Ansatz, um dies zu behandeln.

Antwort

1

Für jede Zeit, erhalten Sie die "lokale" Zeit als ein "time_t" (was ein Wert in Sekunden seit der Epoche sein wird), fügen Sie den GMT-Offset hinzu und Sie werden den Zeitstempel in GMT haben.

Zumindest, wenn Sie sich nicht um solche Dinge wie Sommerzeit oder mögliche Schaltsekunden kümmern, die in den letzten Stunden passiert sind.

Oder machen Sie eine Anforderung, dass die Installateure oder Kunden die richtige Zeitzone festlegen, damit Sie die Standardzeitfunktionen verwenden können. Dies ist oft die einfachste Lösung, da Entwicklerkosten in der Handhabung von zeitbezogenen Fehlern und Komplikationen oft viel teurer sind als ein einmaliges Einrichten von neuer Hardware.

+0

Was Sie gesagt haben, ist richtig. Leider muss ich mich auch um die tägliche Lichteinsparung kümmern, was der Hauptgrund dafür ist, dass ich nach Standardfunktionen suche, die sich um alle möglichen Fälle kümmern sollten. Alles, was das Gerät zur Verfügung stellt, ist nur die Zeit einzustellen, aber nicht die Zone. Der Kunde stellt also nur die Ortszeit basierend auf seiner Uhr ein. Es ist meinerseits, die GMT-Zeit zu berechnen. –