Umkehrfunktion von localtime()
-
Ich brauche die genau umgekehrte Funktion von struct tm *localtime(const time_t *timer ).
Also eine Funktion in die ich einen struct tm rein gebe und die Anzahl der Sekunden vom 1.1.1970 entsprechend zu der angegebenen Zeit im tm zurück bekomme.
Ist das evtl. die Funktion time_t mktime(struct tm *timeptr) ? Von den Argumenten her würde es passen, aber von der Logik her bin ich mir noch nicht 100% sicher.
-
Ja, es ist die Funktion:
time_t mktime(struct tm *zeitzeiger);
Weitere Infos zu der Funktion, sowie zur <time.h> Headerdatei:
21.1 Die Headerdatei <time.h>
--> weiter unten bei mktime() - Umwandeln von struct tm zu time_t
-
Danke. Die mktime() funktioniert so, wie ich das brauche.
-
So, also das funktioniert irgendwie nicht:
Eingangsdatum:
16.07.2007 08:00 Uhr (28800 sec)
mktime gibt 1184569200 als Zeitstempel zurück
Jetzt die andere Richtung:
localtime gibt den 16.07.2007 09:00 Uhr zurück.
-----
Wie bekomme mktime dazu in localtime zu rechnen?
MfG
Zauberspiegel
-
mktime() ist eigentlich die Umkehrung zu gmtime() (sprich: die rechnet mit Greenwich-Zeit). Wenn du aus der Greenwich-Zeit die lokale Zeit bauen willst, mußt du die richtige Zeitverschiebung dort draufrechnen.
-
Die Umkehrung ist es definitiv NICHT, denn
in mktime übergebe ich 8 Uhr
in gmtime kommt 6 Uhr zurück. In localtime kommt korrekterweise 8 Uhr zurück.
-
CStoll schrieb:
mktime() ist eigentlich die Umkehrung zu gmtime() (sprich: die rechnet mit Greenwich-Zeit). Wenn du aus der Greenwich-Zeit die lokale Zeit bauen willst, mußt du die richtige Zeitverschiebung dort draufrechnen.
sicher? Die Manpage bei mir sagt
The mktime() function interprets the input struc-
ture according to the current timezone setting (see tzset(3)). The
timegm() function interprets the input structure as representing Univer-
sal Coordinated Time (UTC).Wobei timegm ne BSD-Erweiterung ist AFAIK
Ach, die Standard Zeit/Datums-Funktionen sind einfach ziemlich merkwürdig
-
rüdiger schrieb:
CStoll schrieb:
mktime() ist eigentlich die Umkehrung zu gmtime() (sprich: die rechnet mit Greenwich-Zeit). Wenn du aus der Greenwich-Zeit die lokale Zeit bauen willst, mußt du die richtige Zeitverschiebung dort draufrechnen.
sicher? Die Manpage bei mir sagt
Im Nachhinein auch nicht mehr.
@Zauberspiegel: Eine Stunde Zeitverschiebung könnte auch an der Sommerzeit liegen.
-
Du musst dich mal entscheiden: liefert localtime nun das gewünschte oder das nicht gewünschte ergebnis?
Deine beiden posts widersprechen einander da.
Zu beachten gilt immer die zeitzone in der du das ergebnis bekommst. ein timestamp zB ist idR immer der UTC wert.
-
Hallo,
ich mach mal keinen neuen Thread auf, da ich fast das selbe Problem habe. Wie oben schon geklärt ist mktime die Umkehrfunktion von localtime (Hab ich auch so ausprobiert und hat geklappt).
Leider habe ich jetzt ein struct tm in GMT und suche die entsprechende Umkehrfunktion zu time_t. Gibt es da was???
Gruß, Hanebuechen