mktime gibt komisches datum zurück

Antworten
Nachricht
Autor
pcAlko
Beiträge: 70
Registriert: 14. Mai 2007 19:27

mktime gibt komisches datum zurück

#1 Beitrag von pcAlko » 29. Okt 2011 22:08

Hallo community!

Ich habe da ein ganz komisches Problem!

habe folgenden code probiert

Code: Alles auswählen

		time_t acttime;
		struct tm* ttime;

		time(&acttime);
		cout << asctime&#40;localtime&#40;&acttime&#41;&#41;;
		ttime= localtime&#40;&acttime&#41;;
		ttime->tm_sec= 0;
		ttime->tm_min= 0;
		ttime->tm_hour= 0;
		ttime->tm_mday+= 2;
		acttime= mktime&#40;ttime&#41;;
		cout << asctime&#40;localtime&#40;&acttime&#41;&#41; << endl;
meine Ausgabe ist nun
  • Sat Oct 29 23:00:59 2011
    Sun Oct 30 23:00:00 2011
wieso hat er mir da jetzt eine Stunde zuwenig berechnet?
wenn ich nur einen Tag aufrechne funktionierts

*edit*
das hängt jetzt aber nicht davon ab dass die Ausgangszeit auch 23:00 Uhr war
hatte dieses Phänomen auch zuvor um 9:00

*edit2*
heute Vormittag habe ich es nochmoals probiert
und die Ausgabe war richtig
  • Sun Oct 30 10:43:22 2011
    Tue Nov 1 00:00:00 2011
ich muss dass jetzt auf längere Zeit beobachten
irgendwas ist da konfus
******************
Linux ist ja open source
was muss ich installieren damit ich diese Funktion mktime debuggen kann?
habe ein Kubuntu 10.04
sind diese time.c sourcen nicht in der glibc library?
oder muss ich einen ganzen Kernel mit sourcen installieren?
******************

kann mir da jemand helfen!?
Bitte, Danke
8) pcAlko

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

#2 Beitrag von Janka » 30. Okt 2011 11:28

Du hast das Feld ttime->tm_isdst nicht auf einen negativen Wert gesetzt. Das müsstest du aber, wenn er bei mktime() automatisch die Sommerzeit der Locale beachten soll. Ein fester Wert von 0 legt ewige Winterzeit fest, ein positiver Wert ewige Sommerzeit. Vemutlich steht da also zufällig Null drin, weswegen es jetzt (in Winterzeit) korrekt funktioniert.

$ man mktime

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

pcAlko
Beiträge: 70
Registriert: 14. Mai 2007 19:27

#3 Beitrag von pcAlko » 30. Okt 2011 16:16

na super *ironie*
das ärgert mich jetzt schon so lange dass ich es inzwischen schon mal aufgegeben hatte
und jetzt wieder in angriff genommen habe.

für tm_isdst steht ja in der Doku dass das die "daylight saving time" ist.
ich hatte das immer mit Tageslicht übersetzt
und dachte mir dass ich damit auf das 12 Stunden Format umschalten kann :oops:

Danke Janka
wenn wir Dich nicht hätten ...
8) pcAlko

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

#4 Beitrag von Janka » 31. Okt 2011 9:54

Ich guck auch nur in die Doku. Related: http://ars.userfriendly.org/cartoons/?id=19990216

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

Antworten