2011-10-26 16 views
0

在我的應用程序比較兩個日期我要比較兩個時間:電流(即12:44),並給予我想:用的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時,它會再次顯示「no」。 – Noobass

+0

也可以@Alex Darkan編輯'hh'到'HH' – Nekto

0

我認爲這個問題是在這裏:

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

應該是:

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

因爲現在對於「14:45」它返回(空)日期

(這是除了之前的回答:)

0

這意味着在您的情況下,neededDate始終高於當前日期。 這可能是因爲您以24小時格式存儲了48小時的字符串。 將字符串更改爲HH:mm

另外,請驗證您存儲在neededDate中的值。

這裏是在這種情況下的一個小例子

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

,癸將被打印。