在我的应用程序中,我必须比较两次:当前(即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会说“不”。请,建议我错了。先感谢您。
答案 0 :(得分: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);
答案 1 :(得分:0)
我认为问题在于:
[dateFormatter setDateFormat:@"hh:mm"];
应该是:
[dateFormatter setDateFormat:@"HH:mm"];
因为现在为“14:45”它返回(null)日期
(这是以前的答案:)
答案 2 :(得分:0)
这意味着在您的情况下,requiredDate始终高于当前日期。 这可能是因为您以24小时格式存储了48小时的字符串。 将字符串更改为HH:mm
另外,验证您在requiredDate中存储的值。
这是一个小例子
NSDate *neededDate = [[NSDate date] dateByAddingTimeInterval:5];
if ([neededDate compare:[NSDate date]] == NSOrderedAscending) {
NSLog(@"asc");
} else {
NSLog(@"dec");
}
在这种情况下,将打印dec。