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 !!!



  • Hallo

    Siehe zum Beispiel hier.

    bis bald
    akari



  • 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_t

    anlegen ???

    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;
    	}
    }
    

Anmelden zum Antworten