Timestamp in lesbares Datum konvertieren

Antworten
Nachricht
Autor
himero
Beiträge: 8
Registriert: 10. Okt 2006 12:56

Timestamp in lesbares Datum konvertieren

#1 Beitrag von himero » 11. Dez 2006 11:01

Hallo!

Ich bräuchte einen Algorithmus und/oder eine Funktion, die es mir ermöglicht einen Zeitstempel (seit 1.1.1900) auf die aktuelle Zeit zu konvertieren.

Hintergrund: Ein NTP-Server gibt mir auf Anfrage den Zeitstempel, der die vergangenen Sekunden seit dem 1.01.1900 00:00 Uhr zurück gibt. Daraus möchte ich nun das aktuelle Datum und die Zeit ausrechnen und mir diese anzeigen lassen.

Vielen Dank für eure Hilfe!

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 11. Dez 2006 19:59

Zuerst die Sekunden bis "epoch" (1.1.1970,00:00) rausrechnen (oder rausprobieren), dann strptime() mit %s als Einleseanweisung. Daraus erhälst du eine struct tm, und die kannst du in strftime() reinstopfen und damit passend formatieren.

$ man strptime
$ man strftime

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

himero
Beiträge: 8
Registriert: 10. Okt 2006 12:56

#3 Beitrag von himero » 12. Dez 2006 10:14

Danke - mit den Funktionen hab ich's schon realisiert bekommen.

Ich bräuchte trotzdem noch einen Algorithmus zur Umrechnung, da das Programm auch unter dem Echtzeitbetriebssystem VxWorks laufen muss und dieses mit den Linux/Unix Funktionen nichts anfangen kann.

Weiß jemand zufällig wo ich einen finde bzw. hat irgendwo einen "rumliegen"?

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#4 Beitrag von Janka » 12. Dez 2006 10:45

Was hindert dich, in die Quellen von glibc zu gucken? Die GPL? Wenn ja, wirst du es auch mit anderen Lösungen, die dir hier irgendjemand vorschlägt, recht schwer haben. Die Schöpfungshöhe dürfte angesichts der vielen Fallstricke in der Kalenderberechnung doch recht hoch sein.

Und vxWorks ist ja nun wirklich != Linux.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Antworten