Frage zur richtigen Auswertung von Datumsinformationen in Datei



  • Hallo, in einer Datei habe ich verschiedene Datensätze stehen. Teil jedes Datensatzes ist auch eine Datumsangabe in der deutschen Form (zB. 30.01.2009). Nun wollte ich diese Datensätze nach ihrer Aktuallität sortieren. Im Moment löse ich das Problem, indem ich das Datum als String einlese, alle Ziffern bis zum Punkt einzeln in neue strings einlese und diese dann in Integer umwandel. Aus diesen drei Integern baue ich mir ein "großes" Integer, indem ich das Jahr*10000 + Monat*100 + Tag rechne (aus dem Datum oben würde sich dann 20090130 ergeben). Diese große Zahl kann ich dann mit den anderen Daten vergleichen.
    Ich bin mir fast sicher, dass das nicht die beste Methode ist 🙂 Gibt es eine "standard"- bzw. übliche Methode, dieses Problem zu lösen?



  • Am besten wäre wohl, wenn das Datum als Zahl in der Datei stünde.
    Deine Methode finde ich prinzipiell ok.
    Ein Standardvorgehen ist mir nicht bekannt, aber es gibt Standardfunktionen, die sich dafür eignen. Für den Vergleich kommt dann eine Zahl vom Typ time_t dabei raus, die Funktionen sind sscanf und mktime.
    Praktisch meine ich das so:

    string date = "06.07.2009";
    	struct tm c = {0}; // (!)
    	time_t t;
    
    	sscanf(date.c_str(),"%d.%d.%d", &c.tm_mday, &c.tm_mon, &c.tm_year);
    	c.tm_mon--; // Falls andere Standardfunktionen mit dem Zahlenwert arbeiten sollen.
    	c.tm_year -= 1900; // dito.
    	t = mktime(&c);
    

    Gruß,
    B.B.


Anmelden zum Antworten