mit datum rechnen und formatieren
-
Hallo,
ich möchte in c++ das datum als Dateinamen verwenden.z.b.
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 ?
mfg
muepfi
-
zufall?? versuche gerade das gleiche:
string datum=("%date%"), pfad, lese_datum; int main(){ pfad=((datum)+(" >> datum.dat)); system(pfad.c_str()); }
nun ist das datum in einer datei, jetzt auslesen:
stringstream DATUM; ifstream DAT; //datei in der das datum liegt definieren DAT.open("datum.dat"); //und öffnen getline(DAT,lese_datum); //datum auslesen DATUM(lese_datum); //als stringstream übernehmen getline(DATUM,tag,'.'); //tage auslesen getline(DATUM,monat,'.');//monat auslesen getline(DATUM,jahr); //jahr auslesen //nun noch die tag usw. abziehen
-
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...
-
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
FormatDateTimeheisen
mfg
aepfl
-
Hallo
aber es muss
nicht
FormatDateString("ddmmyyyy", CurDate);
sondern
FormatDateTimeJa natürlich. Hatte noch TDateTime.DateString() im Kopf. Schön das du die BCB-Hilfe benutzt.
bis bald
akari