0

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

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 小时。谁能解释我需要在这里做什么?

非常感谢,

泰辛

4

2 回答 2

1

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

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

使用以下代码比较日期

[NSDate compare:obj]
于 2012-08-13T08:26:53.280 回答
1

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

//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

于 2012-08-13T08:32:08.070 回答