struct tm macht mich wahnsinnig! Immer falsche Angaben



  • Hallo

    Ich möchte eine Klasse "Termin" realisieren. Dazu muss logischerweise auch das Datum und Uhrzeit abgespeichert werden. Wenn ich nun ein struct tm anlege und Werte reinschreibe, diese dann mit strftime formatiere, kommen immer falsche Werte raus.

    Ein Beispiel:

    struct tm dt;
    
    dt.tm_min = 15;
    dt.tm_hour = 20;
    dt.tm_mday = 5;
    dt.tm_mon = 10 - 1; // Monate seit Januar
    dt.tm_year = 2010 - 1900; // Jahre seit 1900
    dt.tm_isdst = 0; // DST aus
    

    In der Variable müsste ja jetzt die Uhrzeit 20:15 vom Tag 5.10.2010 eingespeichert sein. Formatiere ich es aber mit strftime (Format: "%d.%m.%Y, %H:%M"), kommt das heraus:

    5.11.2010, 22:27

    Wie kommt das zustande? Warum ist 1. der Monat falsch und 2. die Uhrzeit völlig verkorkst? 😮

    Ich werde echt wahnsinnig, das kann doch nicht wahr sein, dass das nicht klappt!

    Compiler ist GNU GCC, Entwicklungsumgebung ist Code::Blocks.

    Gruß,
    Andy 😕


  • Mod

    #include <iostream>
    #include <ctime>
    using namespace std;
    int main()
    {
      struct tm dt;
    
      dt.tm_min = 15;
      dt.tm_hour = 20;
      dt.tm_mday = 5;
      dt.tm_mon = 10 - 1; // Monate seit Januar
      dt.tm_year = 2010 - 1900; // Jahre seit 1900
      dt.tm_isdst = 0; // DST aus
    
      char zeit[200];
      strftime(zeit, 200, "%d.%m.%Y, %H:%M\n", &dt);
    
      cout << zeit;
    }
    

    ➡ 05.10.2010, 20:15

    Du machst etwas anderes falsch.


Anmelden zum Antworten