2017-07-09 5 views
-3

vergleichen 2 Termine if (from_date> = heute & & totime < = heute) i mit dieser versuchtWie vergleichen, ist heute Datum größer als oder gleich zu einem anderen

NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
NSLog(@"%@",[dateFormatter stringFromDate:[NSDate date]]); 
NSString * TodayDate = [dateFormatter stringFromDate:[NSDate date]]; 

if ([displayList.fromTime compare:TodayDate] == NSOrderedDescending) { 
    NSLog(@"date1 is later than date2"); 

} else if ([displayList.toTime compare:date2] == NSOrderedAscending) { 
    NSLog(@"date1 is earlier than date2"); 

} else { 
    NSLog(@"dates are the same"); 

} 

Antwort

0

Sie sind nicht zu sagen, was Klasse des Objekts fromDate ist, aber da Sie es mit TodayDate vergleichen, was eine Zeichenfolge ist, nehme ich an, dass alle Ihre Daten Zeichenfolgen sind, wenn Sie sie vergleichen? Wenn ja, ist das eine schlechte Wahl. Datumsvergleich und Zeichenfolgenvergleich sind nicht identisch und ergeben unterschiedliche Ergebnisse.

Anstatt das heutige Datum in eine Zeichenfolge umzuwandeln, sollten Sie vonDate in ein NSDate umwandeln und diese dann vergleichen.

Wenn OTOH, fromDate keine Zeichenfolge ist, dann ist das Ihr Fehler. Nur weil zwei Objekte dazu führen, dass der gleiche Text NSLogged ist, heißt das nicht, dass sie vom selben Typ sind und verglichen werden können. Stellen Sie daher sicher, dass alle denselben Typ haben (NSDate) und vergleichen Sie diese dann.

0

Sie können NSString vergleichen, was falsch ist. Sie müssen zwei NSDate-Objekte vergleichen.

Hier Update-Code:

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

    // You are doing wrong compareing at here. You need to compare Date nor sting. 
// NSString * TodayDate = [dateFormatter stringFromDate:[NSDate date]]; 

    NSDate *TodayDate = [NSDate date]; 
    NSDate *compareData = [dateFormatter dateFromString:@"2017-07-09 11:12:11"]; 

    if ([compareData compare:TodayDate] == NSOrderedDescending) { 
     NSLog(@"date1 is later than date2"); 

    } else if ([compareData compare:TodayDate] == NSOrderedAscending) { 
     NSLog(@"date1 is earlier than date2"); 

    } else { 
     NSLog(@"dates are the same"); 

    } 
+0

ist es möglich, als mehr zu tun oder equall –

+0

Es wird Zeit und Datum nehmen, so, wenn das Datum ist gleich und Zeit voraus ist, dann wird es NSOrderedDescending zurück. So wird es funktionieren. – Nirmalsinh

+0

@ManjuSSP funktioniert es für Sie? – Nirmalsinh

Verwandte Themen