Sekunden portabel zu struct tm
Von: Markus Wichmann (nullplan@gmx.net) [Profil]
Datum: 24.10.2009 16:01
Message-ID: <kvdbr6-476.ln1@www.wichi.de.vu>
Newsgroup: de.comp.lang.c
Datum: 24.10.2009 16:01
Message-ID: <kvdbr6-476.ln1@www.wichi.de.vu>
Newsgroup: de.comp.lang.c
Hi all, ich habe folgendes Problem: Gegeben sei eine Variable buf vom Typ uint32_t. In ihr steht eine Zeit, kodiert als Sekunden seit dem 1.1.1900, 00:00 Uhr, UTC. Nun ist die Frage, wie ich daraus halbwegs systemunabhängig ein struct tm oder ein time_t mache. Natürlich könnte ich einfach die Sekunden zwischen dem 1.1.1970 und dem 1.1.1900 von der Zahl einfach abziehen und das Ergebnis als time_t interpretieren lassen, aber dabei gehe ich ja von der Annahme aus, dass die Epoche für den time_t der 1.1.1970 und die Maßeinheit die Sekunde ist, und lasse völlig die Möglichkeit außen vor, dass Millisekunden benutzt worden sein könnten, was ja nicht ganz unwahrscheinlich ist. OK, prinzipiell geht ja struct tm t; t.tm_sec = buf % 60; t.tm_min = (buf / 60) % 60; t.tm_hour = (buf / 3600) % 24); äh... und dann? t.tm_mday = (buf / (3600 * 24)) % 31; oder wie? Aber schon dieser Code geht irgendwie am Ziel vorbei, denn er lässt Schaltsekunden völlig außer Acht. Schalttage selbst sind nicht unbedingt ein Problem, wenn ich irgendwann mal das Jahr ermittelt habe, aber Schaltsekunden treten AFAIK völlig irregulär auf. Wie also geht das korrekt? Tschö, Markus -- Nur weil ein Genie nix reißt, muß ja nun nicht gleich jeder Idiot pausieren... Bully hats ja auch geschafft. -- gUnter nanonüm in de.alt.anime[ Auf dieses Posting antworten ]
Antworten
- Alexander alba Bartolich (24.10.2009 19:42)
