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 日 + 1 時間遅れた日付を返すようです。私がここで何をする必要があるかを誰かが説明できますか?

どうもありがとう、

タイシン

4

2 に答える 2

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 に答える
1

正確な日付を取得するには、タイムゾーンを UTC (または使用しているもの) に設定する必要があります。

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

以下のコードを使用して日付を比較します

[NSDate compare:obj]
于 2012-08-13T08:26:53.280 に答える