C++ (Datum)



  • Hallo zusammen,

    ich habe ein kleines Problem in C++. In der Schule haben wir jetzt mit Windowsprogrammierung angefangen
    und einige Aufgaben bekommen die wir bearbeiten sollen aber bei einer Aufgabe hänge ich jetzt ...

    Wir sollten schonmal in einer voherigen Aufgabe ein Zinsprogramm schreiben, wo der Benutzer dann die Anlagedauert in Tage eingeben kann,
    jetzt in der neuen Aufgabe sollen wir aber mit dem Komponenten MaskEdit arbeiten, so das der Benutzer statt die Tage das Datum eingeben kann.

    So letzendlich heißt es in der Aufgaben stellung dass die Zinsberechnung vom akutellen Datum bis zum Anlagedatum berechnet werden soll,
    also wieviele Tage es dazwischen sind.

    Das Systemdatum habe ich schon hinbekommen mit der Header-Datei time.h und haben dann für das aktuelle Datum tm_yday genommen um eben den genauen Tag zu bekommen
    welcher heute ist also da ja heute der 7.2 ist, ist dass der 38 Tag.

    So meine Frage ist jetzt, gibt es irgendeine fomartierungs möglichkeit bei der EditMask, auch sowas wie tm_yday zu benutzen um den Tag raus zukriegen?
    Oder habt ihr vielleicht eine andere möglichkeit wie ich das programmieren kann?

    (Hinweis: Wir müssen keine Jahresberücksichtigung machen also nach dem 31.12 ist dann schluss).
    MFG:
    Wirbeli 😉



  • Wenn Du tm_yday hast, dann hast Du ja auch eine Struktur vom Typ tm. Da steckst Du nun den gewünschten Tag und den gewünschten Monat rein (aus Deiner Eingabemaske) und rufst mktime auf:
    http://cplusplus.com/reference/clibrary/ctime/mktime/



  • Dankeschön :).
    Soweit klappt jetzt alles, habe jetzt nur noch ein problem, wo ich den fehler nicht finde ...

    struct tm *tmnow;
     struct tm *tmUser;
     String S1,S2,S3,S4,S5,day,month,year;
     int day1,month1,year1;
    
     time_t tnow;
     time(&tnow);
     tmnow = localtime(&tnow);
     S4 = tmnow->tm_yday+1;
     Edit1->Text = tmnow->tm_yday+1;
     tmUser = localtime(&tnow);
    
     S1 = MaskEdit1->Text;
     day = S1.SubString(1,2);
     month = S1.SubString(4,2);
    
     day1 = day.ToInt();
     month1 = month.ToInt();
    
     tmUser->tm_mon = month1;
     tmUser->tm_mday = day1;
    
     mktime(tmUser);
     S5 = tmUser->tm_yday+1;
     S3 = S5-S4;
     Edit2->Text = tmUser->tm_yday+1;
     Edit3->Text = S3;
    

    So das ist jetzt mein Code, aber das Endergebnis stimmt jetzt nicht statt 236 kommt 264 raus ?! weiß jemand was ich falsch gemacht habe?!


Anmelden zum Antworten