2 Stimmen

Validierung für Eingabestring ist Datum oder nicht?

Ich habe ein Textfeld, in dem der Benutzer sein Geburtsdatum eingeben kann. Jetzt möchte ich sicherstellen, ob die Eingabe im Datumsformat vor dem Speichern in die Datenbank ist. Ich habe SO durchgesehen, aber ich habe immer noch keine Antwort erhalten. Kann mir jemand sagen, wie ich die Eingabe validieren (ist es ein Datum).

Das Datumsformat wäre MM/DD/YYYY

Hinweis: Ich möchte nicht, dass der Benutzer das Datum über den Datepicker auswählt.

4voto

9to5ios Punkte 5026

Versuchen Sie dies

NSString *dateFromTextfield = @"07/24/2013";

   // Konvertieren Sie den String in ein Datum-Objekt
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"MM/dd/yyyy"];// Hier das Format festlegen, das Sie möchten...
    NSDate *date = [dateFormat dateFromString:dateFromTextfield]; 
    [dateFormat release];

und dann überprüfen

// Setzen Sie die Positionen 2 und 5 auf int, da sie / für ein gültiges Datum enthalten
unichar ch = [dateFromTextfield characterAtIndex:position];
NSLog(@"%c", ch);

if (ch == '/') 
{
 // Gültiges Datum
}
else
 { 
 // Kein gültiges Datum
}

1voto

Blevz Punkte 30

String in ein Datum in meiner iPhone-App konvertieren

Dann überprüfen Sie, ob es null ist oder nicht. Vielleicht auch überprüfen, ob es innerhalb einer vernünftigen Grenze für Ihre Anwendung liegt

1voto

nsinvocation Punkte 7219

Zunächst verwenden Sie UIDatePicker, da es speziell dafür entwickelt wurde und eine natürliche Art bietet, ein Datum auf der iOS-Plattform auszuwählen. Falls Sie jedoch überprüfen möchten, ob der String aus dem UITextField ein Datum ist, formatieren Sie ihn (mit einem Formatter) und erhalten Sie das Datum basierend auf dem Formatter.

NSString *dateAsString = @"2010-05-24" // String aus dem Textfeld
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate * dateFromString = [myDateFormatter dateFromString:dateAsString];

Wenn NSDate nicht null ist, ist alles in Ordnung, ansonsten stimmt etwas nicht: Der Benutzer hat kein Datum eingegeben oder das eingegebene Datum hat ein falsches Format.

VERSUCHEN SIE, EINEN HINWEIS FÜR DEN BENUTZER ZU GEBEN, ZUM BEISPIEL: 'DAS DATUM SOLLTE DAS FORMAT HABEN: JJJJ-MM-TT'

1voto

NSString *dateFromTextfield = @"07/24/2013";

//Zusätzliche Validierung, da der Benutzer ein UTC-Datum als vollständigen Text im Textfeld eingeben kann,
//Hier ging ich davon aus, dass Sie nur eine Zeichenfolgenlänge von 10 für das Datum erwarten würden
//Wenn mehr als zehn Ziffern, dann ungültiges Datum.
if ([dateFromTextfield length]>10) {

    //Fehlermeldung für ungültiges Datum anzeigen

    return;

}

//Wenn Sie das richtige Datumsformat angeben, wird der Datumsformatter es nur in ein NSDate konvertieren. Andernfalls wird nil zurückgegeben.
//Daher können wir das nutzen, um festzustellen, ob der Benutzer ein Datum eingegeben hat oder nicht.

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM/dd/yyyy"];
NSDate *date = [dateFormat dateFromString:dateFromTextfield];
[dateFormat release];

//Wenn das Datum und das Datum-Objekt eine Instanz der NSDate-Klasse sind, dann muss es sich um ein Datum handeln, das vom Datumsformatter erstellt wurde.
if (date!=nil && [date isKindOfClass:[NSDate class]]) {

    //Der Benutzer hat ein Datum eingegeben
    // '/' und Zahlen wurden eingegeben

}
else{

    //Fehlermeldung für ungültiges Datum anzeigen

    //Abweichendes Datumsformat.
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X