目标C - 确定哪个日期晚于格式化日期

时间:2012-08-13 07:54:29

标签: iphone objective-c ios nsdate nsdateformatter

我有以下格式的两个日期:

2012年8月6日

我使用以下代码尝试确定以后的日期:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"MMMM d, yyyy"];
        NSString *today = [dateFormatter stringFromDate:[NSDate date]];
        NSLog(@"%@", today);
        NSDate *todayDate = [dateFormatter dateFromString:today];

        NSLog(@"TodayDate: %@", todayDate);
        for (Job *j in appDelegate.jobs){
            if ([j.dueDate laterDate:todayDate]){
                [jobsToDisplay addObject:j];
            }
        }

然而,这段代码不起作用,似乎返回的日期比他们应该的日期落后+ 1小时。谁能解释我在这里需要做什么?

非常感谢,

Tysin

2 个答案:

答案 0 :(得分:1)

您应该将时区设置为UTC(或您正在使用的任何时区)以获取确切的日期。

[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];

使用以下代码比较日期

[NSDate compare:obj]

答案 1 :(得分:1)

您可以使用NSDate的compare:实例方法

//If j.dueDate = today
if ([j.dueDate compare:todayDate] == NSOrderedSame) {
        return YES;
    }
//j.dueDate is latest
    else if ([j.dueDate compare:todayDate] == NSOrderedDescending) {
        return YES;
    }

了解详情https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html

https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Constants/Reference/reference.html#//apple_ref/doc/c_ref/NSComparisonResult