Datum und Zeiten
-
Hallo könnte mich jemand helfen?
Wie bekomme ich das aktuelle Dastum in folgender Form in etwa in c++ ?
- 16.10.2007
wenn ich nun ein Datum eingebe wie z.b. 16.10.2007 als string
wie kann ich dann überprüfen ob es ein echtes datum ist?Viele Vielen Dank im Vorraus !!!
-
-
sorry aber damit komme ich ned richtig zurecht

-
Und damit? Ist auch schöner in einem C++-Programm...
-
Nee sorry ich will keine nich standard bibliothek extra einbinden müssen !!!
-
Wie kann ich denn mittes diesem String sagen wir mal "10.09.2003"
ein Objekt von
time_tanlegen ???
also sowas in der art wie:
time_t = meinezeit("10.09.2003");
-
Das mußt du manuell zerlegen und parsen (am besten nicht direkt in einen time_t, sondern erstmal in einen 'struct tm', das geht einfacher). Im ANSI Standard sind mir keine Funktionen dafür bekannt, also kannst du entweder etwas eigenes schreiben oder die obengenannte Boost-Bibliothek verwenden.
(Boost geht bei vielen Programmierern schon als Beinahe-Standard durch ;))
-
das mußt du manuell zerlegen und parsen
Das wäre eine Möglichkeit. Einfacher ist die Verwendung des facets time_get, dass aus einem locale extrahiert werden kann. Das hat gleich noch den Vorteil, dass länderspezifische Eigenheiten berücksichtigt werden können - ein passendes Locale-Objekt vorausgesetzt.
Bsp:
#include <iostream> #include <sstream> #include <locale> using namespace std; int main() { stringstream str; str << "10 09 2006 17:22:00"; ios_base::iostate err = 0; tm t; std::memset(&t, sizeof(tm), 0); istreambuf_iterator<char> beg(str), end; beg = use_facet<time_get<char> >(str.getloc()).get_date(beg, end, str, err, &t); if (str) { while (*beg == ' ') ++beg; use_facet<time_get<char> >(str.getloc()).get_time(beg, end, str, err, &t); } if (str) { char buf[256]; strftime(buf, sizeof(buf), "%x %X", &t); cout << buf << endl; time_t tv = mktime(&t); cout << tv << endl; } else { cout << "Parse error" << endl; } }