mit datum rechnen und formatieren



  • so , das funktioniert. nun baue es noch auf deine bedürfnisse aus:

    #include <iostream>
    #include <windows.h>
    #include <sstream>
    #include <fstream>
    using namespace std;
    
    string pfad, lese_datum, tag, monat, jahr; 
    int Dtag, Dmonat, Djahr;
    stringstream Stag, Smonat, Sjahr;
    
    int main(){ 
    pfad=(("date /T > datum.dat")); //pfad initialisieren
    system(pfad.c_str());           //datum in datei umleiten
    ifstream DAT;                   //datei in der das datum liegt definieren 
    DAT.open("datum.dat");          //und öffnen 
    getline(DAT,lese_datum);        //datum auslesen 
    DAT.close();                    //datei schließen
    DAT.clear();                    //stream 'entfernen'
    system("del datum.dat /Q/F");   //datei löschen
    stringstream DATUM(lese_datum); //als stringstream übernehmen 
    getline(DATUM,tag,'.');         //tage auslesen 
    getline(DATUM,monat,'.');       //monat auslesen 
    getline(DATUM,jahr,'\n');       //jahr auslesen
    cout << tag << "."<< monat << "." << jahr << endl;   //ausgabe aktuelles datum (string)
    Stag << tag;                    //string zu stringstream
    Smonat << monat;
    Sjahr << jahr;
    Stag >> Dtag;                   //stringstream zu int
    Smonat >> Dmonat;
    Sjahr >> Djahr;
    cout << Dtag-1 << "." << Dmonat << "." << Djahr << endl; //ausgabe datum (gestern)
    }
    


  • erstmal danke,

    zu was schreibst du den das datum in eine Datei ?

    und wenn dtag = 1 ist und du 1 abziehst hast du
    den 0.12.2004 oder ??

    mfg

    muepfi



  • Er hat doch gesagt du sollst es anch deine VOrstellungen ausbauen.



  • ja weiss ich,
    dachte nur er brauct das dtag-1 auch,
    und wollte ihn auf den fehler hinweisen !

    mfg muepfi



  • dann bau dir doch sowas ein (für die monate mußt du es schon selbst tun)

    switch (Dtag){
      case 1:
        system("rd /Q/S 26.12.2004");
        break;
      case 2:
        system("rd /Q/S 27.12.2004");
        break;
      case 3:
        system("rd /Q/S 28.12.2004");
        break;
      case 4:
        system("rd /Q/S 29.12.2004");
        break;
      case 5:
        system("rd /Q/S 30.12.2004");
        break;
      case 6:
        system("rd /Q/S 31.12.2004");
        break;
      case 7:
        system("rd /Q/S 1.12.2004");
        break;
      case 8:
        system("rd /Q/S 2.12.2004");
        break;
      case 9:
        system("rd /Q/S 3.12.2004");
        break;
      case 10:
        system("rd /Q/S 4.12.2004");
        break;
      case 11:
        system("rd /Q/S 5.12.2004");
        break;
      case 12:
        system("rd /Q/S 6.12.2004");
        break;
      case 13:
        system("rd /Q/S 7.12.2004");
        break;
      case 14:
        system("rd /Q/S 8.12.2004");
        break;
      case 15:
        system("rd /Q/S 9.12.2004");
        break;
      case 16:
        system("rd /Q/S 10.12.2004");
        break;
      case 17:
        system("rd /Q/S 11.12.2004");
        break;
      case 18:
        system("rd /Q/S 12.12.2004");
        break;
      case 19:
        system("rd /Q/S 13.12.2004");
        break;
      case 20:
        system("rd /Q/S 14.12.2004");
        break;
      case 21:
        system("rd /Q/S 15.12.2004");
        break;
      case 22:
        system("rd /Q/S 16.12.2004");
        break;
      case 23:
        system("rd /Q/S 17.12.2004");
        break;
      case 24:
        system("rd /Q/S 18.12.2004");
        break;
      case 25:
        system("rd /Q/S 19.12.2004");
        break;
      case 26:
        system("rd /Q/S 20.12.2004");
        break;
      case 27:
        system("rd /Q/S 21.12.2004");
        break;
      case 28:
        system("rd /Q/S 22.12.2004");
        break;
      case 29:
        system("rd /Q/S 23.12.2004");
        break;
      case 30:
        system("rd /Q/S 24.12.2004");
        break;
      case 31:
        system("dr /Q/S 25.12.2004");
        break;
      };
    


  • 😮 what the!!!
    ohne jetzt alles gelesen und bedacht zu haben, scheint mir doch der letzte vorschlag nicht sehr elegant gelöst...



  • @ethereal

    korrekt, aber was soll man da noch sagen (besser als kein vorschlag) 😉 😃



  • ich habe immer noch nicht gelesen, nur überflogen, aber wenn ich das problem richtig verstanden habe, geht es um folgendes:

    Ich möchte vom aktuellen Datum 1 abziehen und dann dieses Datum als Dateinamen verwenden. Problem: Wenn man beim 1. eines Monats abzieht, ist das Datum 0. Was kann man da machen?

    meine spontane idee:
    datum in tage umwandeln...dazu gibt's doch galaube ich sogar bei volkards tutorial ein beispiel.also tage ab bestimmten zeitraum, schlatjahr berücksichtigen usw...
    dann von den tagen eins abziehen und wieder das ganze in ein datums-format parsen.
    wenn ihr das nicht alles selber schreiben mögt und ihr eventuell sogar noch unter windows arbeitet und nicht unbedingt plattformunabhängigkeit benötigt, gibts doch da bestimmt prima dateitypen für, z.b. COleDateTime aus dem MFC-Nähkasten oder was weiss ich...bin mir sicher, es gibt auch zig bibliotheken im netz, die solche spässe "supporten".
    vielleicht hilft das ja...wenn ich das problem nicht richtig erraten habe, möge man diesen beitrag einfach überspringen (eigentlich unsinnig von mir, das jetzt ans ende zu schreiben...naja, ich sag mal: trotzdem danke für's lesen 😉 )

    reg.usw...



  • Hallo,

    aepfl scheint einen Borland-Compiler zu verwenden (siehe AnsiString). Da gibt es die schöne Klasse TDateTime, die derartige Spielereien recht einfach gestaltet. Am besten mal die selbe Frage im BCB-Forum stellen.

    Ciao



  • Hallo

    Heute ist der 01.12.2004 die datei soll dann heisen 30112004 wie kann ich immer vom aktuellen Datum eins abziehen und dann als AnsiString verwenden ?

    Also wenn ich AnsiString lese, nehme ich an, das du mit dem Borland C++ Builder arbeitest, oder? Und da gibt es TDateTime, um genau das zu machen:

    TDateTime CurDate = Date(); // Variable mit aktuellen Datum
    CurDate--;
    AnsiString CurDateString = FormatDateString("ddmmyyyy", CurDate);
    

    /Edit : Hatte irgendwie den Post von Braunstein überlesen...

    bis bald
    akari



  • Vielen Dank @akari !!!

    Hast mir sehr geholfen !

    aber es muss
    nicht
    FormatDateString("ddmmyyyy", CurDate);

    sondern
    FormatDateTime

    heisen

    mfg

    aepfl



  • Hallo

    aber es muss
    nicht
    FormatDateString("ddmmyyyy", CurDate);
    sondern
    FormatDateTime

    Ja natürlich. Hatte noch TDateTime.DateString() im Kopf. Schön das du die BCB-Hilfe benutzt. 🙂

    bis bald
    akari


Anmelden zum Antworten