Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
mktime gibt komisches datum zurück

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
pcAlko



Anmeldungsdatum: 14.05.2007
Beiträge: 70

BeitragVerfasst am: 29. Okt 2011 22:08   Titel: mktime gibt komisches datum zurück

Hallo community!

Ich habe da ein ganz komisches Problem!

habe folgenden code probiert
Code:

      time_t acttime;
      struct tm* ttime;

      time(&acttime);
      cout << asctime(localtime(&acttime));
      ttime= localtime(&acttime);
      ttime->tm_sec= 0;
      ttime->tm_min= 0;
      ttime->tm_hour= 0;
      ttime->tm_mday+= 2;
      acttime= mktime(ttime);
      cout << asctime(localtime(&acttime)) << 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
Cool pcAlko
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 30. Okt 2011 11:28   Titel:

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.
 
Benutzer-Profile anzeigen Private Nachricht senden

pcAlko



Anmeldungsdatum: 14.05.2007
Beiträge: 70

BeitragVerfasst am: 30. Okt 2011 16:16   Titel:

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 Embarassed

Danke Janka
wenn wir Dich nicht hätten ...
Cool pcAlko
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 31. Okt 2011 9:54   Titel:

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.
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy