[英]Comparing two dates with nsdate
在我的應用程序中,我必須比較兩次:當前(這是12:44)並且考慮到我嘗試過:
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就會說“不”。 請,建議我錯了。 先感謝您。
因為您的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);
我認為問題在於:
[dateFormatter setDateFormat:@"hh:mm"];
應該:
[dateFormatter setDateFormat:@"HH:mm"];
因為現在為“14:45”它返回(null)日期
(這是以前的答案:)
這意味着在您的情況下,requiredDate總是高於當前日期。 這可能是因為您以24小時格式存儲了48小時的字符串。 將字符串更改為HH:mm
另外,驗證您在requiredDate中存儲的值。
這是一個小例子
NSDate *neededDate = [[NSDate date] dateByAddingTimeInterval:5];
if ([neededDate compare:[NSDate date]] == NSOrderedAscending) {
NSLog(@"asc");
} else {
NSLog(@"dec");
}
在這種情況下,將打印dec。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.