2016-09-17 3 views
-1

2つの比較の問題に直面していますNSDates。私は間違っているところで適切な価値を得ていません。0または等しいを返す2つのNSDateの比較

最初にcompareのメソッドをNSDateと返していましたが、0を返していましたが、次に同じ出力を与えるtimeIntervalSince1970を呼び出してfloatに変換しようとしました。 私が間違っていることは、私は取得していません。

ここで私がやった簡単な試みです。すべてのあなたの日付のギ

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"dd/MM/YYYY"]; 

NSString *date1String = @"01/01/2016"; 
NSString *date2String = @"03/01/2016"; 

float date1 = [[formatter dateFromString:date1String] timeIntervalSince1970]; 
float date2 = [[formatter dateFromString:date2String] timeIntervalSince1970]; 

if (date1 > date2) { 
    NSLog(@"date1 is later than date2"); 

} else if (date1 < date2){ 
    NSLog(@"date1 is earlier than date2"); 

} else { 
    NSLog(@"date1 is Equal date2 %f \n%f",date1,date2); 
} 

答えて

0

まず間違っている、それはdd/MM/yyyyNSDateオブジェクトと比較するcompareを使用する必要があります。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"dd/MM/yyyy"]; 

NSString *date1String = @"01/01/2016"; 
NSString *date2String = @"03/01/2016"; 

NSDate *date1 = [formatter dateFromString:date1String]; 
NSDate *date2 = [formatter dateFromString:date2String]; 
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

ありがとう、YYYYが問題でした。 これは正しく表示されています。 :) –

+0

YYYYをyyyyに変更しないと、適切な日付が得られません。 –

+1

doubleを使用しないでください.NSTimerIntervalを使用してください。適切な日付形式で回答を更新します。 – rmaddy

関連する問題