0

私は2 NSDates、a、startdateおよびを持っていenddateます。これらの日付の形式は次のとおりです。

startDate = 2013-02-22 12:00:00 +0000; endDate = 2013-02-25 13:00:00 +0000;

次に、これらの日付を比較します。したがって、私はこのコードを持っています。

if([event.startDate isEqualToDate:event.endDate]){
     NSLog(@"event %@ is in the same day",event.title);
}else{
     NSLog(@"event %@ is NOT in the same day",event.title);
}

しかし、問題は、それが常にelseステートメントに含まれることです。startDateとendDateが同じ日、月、年にある場合は、最初に表示されNSLog、2番目に表示されるようにします。NSLog

何か助けはありますか?

4

2 に答える 2

1

これを試して :

if ([event.startDate compare:event.endDate]==NSOrderedSame)
{
    // The same
}
else
{
    // Not the same
}

編集: そして今、私は気づいた(@trojanfoeの正しいコメント):時間も同じであることを確認するか、単にNSDateオブジェクトから削除してください。

于 2013-02-13T08:32:29.890 に答える
0
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *startDateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit) fromDate:startDate];
    NSDateComponents *endDateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit) fromDate:endDate];
    NSDate *startDate = [calendar dateFromComponents:startDateComponents];
    NSDate *endDate = [calendar dateFromComponents:endDateComponents];

    if([startDate isEqualToDate:endDate])
    {
        NSLog(@"event %@ is in the same day",event.title);
    }
    else{
        NSLog(@"event %@ is NOT in the same day",event.title);
    }
于 2013-02-13T08:39:23.063 に答える