-1

私はこのように2つの日付を比較しています:

NSDateFormatter *df= [[NSDateFormatter alloc] init];
[df setDateFormat:@"  dd : MM : yyyy"];

NSDate *dt1 = [[NSDate alloc] init];
dt1=[df dateFromString:TheDate];

NSDate *Date=[NSDate date];
NSLog (@"DATE CURRENT: %@ DATE 2 %@", Date, dt1);

if ([Date compare:dt1] == NSOrderedDescending) {
    NSLog(@"Date is later than date2");

} else if ([Date compare:dt1] == NSOrderedAscending) {
    NSLog(@"Date is earlier than date2");
    [postsToBeDeleted addObject: textmessage];

} else {
    NSLog(@"dates are the same");
}

NSLogは私に:

DATE CURRENT: 2013-02-05 21:37:54 +0000 DATE 2 2012-01-04 23:00:00 +0000

しかし、現在の日付がdt1の日付よりはるかに進んでいることは明らかですが、それでもNSLog(@ "Date is later than date2");を取得します。どうしてこれなの?

4

2 に答える 2

2

-compare:NSDate インスタンスでどのように機能するかによります。ドキュメントは言う:

もしも:

  • レシーバーと anotherDate が完全に一致している、NSOrderedSame
  • 受信者は、anotherDate、NSOrderedDescending よりも時間的に遅れています
  • 受信者は、anotherDate、NSOrderedAscending よりも時間的に早いです。

この場合、受信者はDateであり、anotherDateあなたのdt1です。Dateより遅い時間ですdt1ので、お得になりますNSOrderedDescending。(これは実際にログ ステートメントが暗示している状況です。混乱の原因がどこにあるのか、私には少しわかりません。)

于 2013-02-05T21:44:52.353 に答える
0

興味深いことを引用させてください:

もしも:

  • レシーバーと anotherDate が完全に一致している、NSOrderedSame
  • 受信者は、anotherDate、NSOrderedDescendingよりも時間的に遅れています
  • 受信者は、anotherDate、NSOrderedAscending よりも時間的に早いです。
于 2013-02-05T21:49:06.460 に答える