2016-07-13 11 views
-1

Ich habe zwei textFields Von und zu in ViewController implementiert. Wenn der Benutzer die textField wählt, kann er das Datum aus dem Kalender auswählen. Das ausgewählte Datum wird im Format TextField als YYYY-MM-dd gespeichert.Datum aus Textfeld vergleichen

Und ich habe eine Berechnung Schaltfläche in ViewController implementiert. Wenn die zwei TextField gefüllt sind, muss ich etwas Arbeit zu tun.

Als die beiden textField gefüllt sind und die von TextField größer, möchte ich eine Warnung angezeigt wird, wenn die Von TextField Datum länger ist als zu TextField.

Wie kann ich es vergleichen ...?

+0

Warum nicht diese Felder 'UIDatePicker' Objekte? – Droppy

Antwort

0
NSDateFormatter * df = [[NSDateFormatter alloc] init]; 
    [df setDateFormat: @"yyyy-MM-dd"]; 
    NSDate * dt1 ; 
    NSDate * dt2 ; 
    dt1 = [df dateFromString: txt1.text]; 
    dt2 = [df dateFromString: txt2.text]; 
    NSComparisonResult result = [dt1 compare: dt2]; 
    switch (result) { 
     case NSOrderedAscending: 
      NSLog(@"%@ is greater than %@", dt2, dt1); 
      break; 
     case NSOrderedDescending: 
      NSLog(@"%@ is less %@", dt2, dt1); 
      break; 
     case NSOrderedSame: 
      NSLog(@"%@ is equal to %@", dt2, dt1); 
      break; 
     default: 
      NSLog(@"erorr dates %@, %@", dt2, dt1); 
      break; 
    } 

Hoffnung das wird Ihnen helfen ....

+0

@ Cyph3r haben Sie die Antwort überprüft? –

0

Ich glaube, Sie für diese Funktionalität suchen ..

NSCalendar* currentCalendar = [NSCalendar currentCalendar]; 
    NSCalendarUnit unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute; 
    NSDateComponents *differenceComponents = [currentCalendar components:unitFlags fromDate:postdate toDate:[NSDate date] options:0]; 
    NSInteger yearDifference = [differenceComponents year]; 
    NSInteger monthDifference = [differenceComponents month]; 
    NSInteger dayDifference = [differenceComponents day]; 
    NSInteger hourDifference = [differenceComponents hour]; 
    NSInteger minuteDifference = [differenceComponents minute]; 

ich das hoffen, dass Sie helfen ..

0

Erste Sie müssen dieses zwei Textfeld Zeichenfolge Datum in NSDate Objekt konvertieren und compare: Methode des Datums verwenden, um Datum zu vergleichen.

NSString *dateString1 = @"2016-05-31"; //First text field value 
NSString *dateString2 = @"2016-05-31"; //Second text field value 
NSDateFormatter *dateFormatter=[NSDateFormatter new]; 
[dateFormatter setDateFormat:@"YYYY-MM-dd"]; 
NSDate *date1=[dateFormatter dateFromString:dateString1]; 
NSDate *date2=[dateFormatter dateFromString:dateString2]; 

if ([date1 compare:date2] == NSOrderedDescending) { 
    NSLog(@"date1 is later than date2"); 
} else if ([date1 compare:date2] == NSOrderedAscending) { 
    NSLog(@"date1 is earlier than date2"); 
} else { 
    NSLog(@"dates are the same"); 
} 
+0

@ user3182143, warum bin ich meinen Code entfernen? Dieser Code wurde von mir generiert. –

+0

Ok Dann warte meine Antwort. – user3182143

+0

Es wird auch von mir generiert – user3182143

1

Perfekte Lösung

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd"]; 

NSString *textFieldDateString1 = @"2016-07-14"; 
NSString *textFieldDateString2 = @"2016-07-15"; 

NSDate *date1 = [dateFormatter dateFromString:textFieldDateString1]; 
NSDate *date2 = [dateFormatter dateFromString:textFieldDateString2]; 

if ([date1 compare:date2] == NSOrderedDescending) { 
    NSLog(@"date1 is later than date2"); 
} else if ([date1 compare:date2] == NSOrderedAscending) { 
    NSLog(@"date1 is earlier than date2"); 
} else { 
    NSLog(@"dates are the same"); 
} 

Gedruckt Ergebnis ist

date1 is earlier than date2 

Date Comparision

Compare Two dates

+0

Dieser * könnte * abstürzen, wenn die Datumszeichenfolge nicht mit dem Datumsformat übereinstimmt. Also nicht so perfekt. Auch andere haben die gleiche Antwort vor Ihnen gepostet, daher ist nicht klar, was Ihre Antworten hinzufügen. – Droppy

+0

Wie kann es abstürzen? Versuchen Sie meine Antwort. Wenn Sie einen Unfall bekommen, senden Sie mir diesen Bericht. – user3182143

+0

Ich gab hier einfache Antwort für Benutzer.Wenn er das Datum vom Server bekommt, muss er es zuerst an die Zeichenfolge zu bekommen. Danach kann er auf Datum umwandeln und er kann zwei Daten direkt vergleichen. – user3182143

Verwandte Themen