2011-10-26 7 views
0

を持つ2つの日付の比較:(12:44である)電流を、私が試し与えられた:は、私は2回を比較する必要が私のアプリでnsdate

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"hh:mm"]; 
NSDate *neededDate = [[NSDate alloc] init]; 
neededDate = [dateFormatter dateFromString:@"14:45"]; 
if ([neededDate compare:[NSDate date]] == NSOrderedAscending) { 
NSLog(@"yes"); 
} else NSLog(@"no"); 
[neededDate release]; 
[dateFormatter release]; 

しかし、私はそれを起動し、いつでも、のNSLogは「ノー」と言います。私が間違っている場所を示唆してください。前もって感謝します。

答えて

2

neededDate"1970/01/01 14:45"と等しいためです。

正しい年と日付を設定する必要があります。

あなたは月、現在の年を取得し、次のアプローチを使用して、例えば、言うことができる:

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:[NSDate date]]; 
NSLog(@"Current year: %d", components.year); 
NSLog(@"Current month: %d", components.month); 
NSLog(@"Current day: %d", components.day); 
+0

しかし、NSOrderedDescendingに変更すると、再び「いいえ」と表示されます。 – Noobass

+0

@Alex Darkanが述べたように、 'hh'から' HH'に編集する – Nekto

0

私は、問題はここにあると思う:

[dateFormatter setDateFormat:@"hh:mm"]; 

は次のようになります。

[dateFormatter setDateFormat:@"HH:mm"]; 

「14:45」のため、現在(null)の日付を返します

(これは前回の回答に追加です:)

0

これは、あなたのケースでは、neededDateが常に現在の日付よりも高いことを意味します。 これはおそらく48時間文字列を24時間形式で保存したためです。 文字列をHHに変更します。mm

また、必要な日付に格納する値を確認します。

はここに、この場合の小さな例

NSDate *neededDate = [[NSDate date] dateByAddingTimeInterval:5]; 
    if ([neededDate compare:[NSDate date]] == NSOrderedAscending) { 
     NSLog(@"asc"); 
    } else { 
     NSLog(@"dec"); 
    } 

だ、12月には、印刷されます。

関連する問題