is time?

mike4004

Erfahrenes Mitglied
Hi

C [Windows/Linux][console]

Ich hätte eine Frage unzwar bekomme ich vom Benutzer eine Zeit eingegeben. Und ich wollte jetzt herausfinden ob es einen Befehl in der Standart Bibliothek gibt die überprüft ob die Zeit wirklich existiert hat. nicht das einer den 30.2.2006 eingibt.

also sowas ähnliches wie is_time?

Danke schon mal für die Antwort den ich habe keine ahnung wie ich das ganze mit Schaltjahr und so mache.(oder vieleicht hat jemand von euch selbst eine Funktion geschrieben?)

würde mich über Hilfen oder Codeschnipsel freuen.

mfg mike4004
 
Hallo,

eine Standardfunktion gibt es dazu meines Wissens nicht, aber man kann sie sich relativ leicht selbst implementieren:

C:
#include <time.h>

int is_date(int mday, int mon, int year) {
    // Zeitstruktur füllen
    tm tm_time = {
        0, 0, 0,
        mday, mon - 1, year - 1900,
        -1, -1, -1
    };

   // mktime gibt bei Fehler -1 zurück
    if (mktime(&tm_time) == -1) return 0;

    // Ansonsten korrigiert mktime die übergebene Zeit
    // (aus dem 29. Februar wird bspw. der 1. März).
    // Wurde eine solche Korrektur durchgenommen, war
    // das ursprüngliche Datum ungültig.
    return (tm_time.tm_mday == mday &&
            tm_time.tm_mon  == mon - 1 &&
            tm_time.tm_year == year - 1900);
}
Aber keine Garantie für garnichts, hab das jetzt nicht ausführlich getestet.

Grüße,
Matthias
 
Hi

Danke für die Schnelle Hilfe.

Das ganze Funktioniert super. Nur mit dem Problem das man nicht all zu alt sein darf.


mfg mike4004
 
Zurück