繁体   English   中英

使用nsdate比较两个日期

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM