2016-04-05 4 views
0

実際には、この形式の「yyyy-MM-dd HH:mm」のNSDateを比較したいので、dateとtimeの2つのdate_time値目的地cの第2の値を無視する。目的C 2つのdate_timeと第2の値の無知を比較する方法

+0

NSOrderedAscendingdate1ためNSOrderedDescendingdate2前とdate1は両方の日付で '00'に2つ目の値を設定し、彼らは混乱比較アップをしません。 – holex

+0

'NSDateFormatter'を使って2つの' NSString'オブジェクトを 'NSDate'オブジェクトに変換し、' NSDateComponents'を使って関連するコンポーネントの等価性をチェックすることができます。あるいは、あなたが設定したのと同じで簡単な形式(同じタイムゾーンなど)を持っている場合は、部分文字列を比較するだけです(分を表す最後の2文字を削除してください)。 – Larme

+0

@Larme文字列はありません。単に 'NSDate'だけです。 OPは、2つのNSDateインスタンスの「秒」を無視したいだけです。 – rmaddy

答えて

2

今日、おそらく最も良い方法は-[NSCalendar isDate:equalToDate:toUnitGranularity:]です。

BOOL datesAreEqual = [[NSCalendar currentCalendar] isDate:date1 
    equalToDate:date2 toUnitGranularity:NSCalendarUnitMinute]; 

代わり-[NSCalendar compareDate:toDate:toUnitGranularity:]を使用し、(後半/より最新である1を見つける)、それらを比較します。

+0

これを忘れてしまいました。私の答えよりずっと良い。 – rmaddy

0

NSCalendarは、特定の単位に制約された日付を比較する非常に便利な方法があります。 toUnitGranularityパラメータをNSCalendarUnitMinuteに設定すると、秒は無視されます。

NSDate *date1 = [NSDate date]; 
NSDate *date2 = [date1 dateByAddingTimeInterval:30.0]; 
NSComparisonResult compareDateIgnoringSeconds = [[NSCalendar currentCalendar]   
               compareDate:date1 
                toDate:date2 
              toUnitGranularity:NSCalendarUnitMinute]; 
NSLog(@"%@, %@, %ld", date1, date2, compareDateIgnoringSeconds); 

結果が等しいかどうかNSOrderedSameで、date2

関連する問題