Cocoa-Touch: 2 つの NSDate が同じ日にあるかどうかを確認するにはどうすればよいですか? 質問する

Cocoa-Touch: 2 つの NSDate が同じ日にあるかどうかを確認するにはどうすればよいですか? 質問する

2 つの NSDate インスタンスが両方とも同じ日のものであるかどうかを知る必要があります。

NSDateComponents を取得して日/月/年を比較するよりも簡単/良い方法はありますか?

ベストアンサー1

ターゲットにしている場合iOS 8 (および OS X 10.9) 以降、 それからジョーの答えこの目的のためだけに NSCalendar の新しいメソッドを使用する方がよい解決策です。

-[NSCalendar isDate:inSameDayAsDate:]

iOS 7以前の場合: NSDateComponents が私の好みです。次のようなものはどうでしょうか:

- (BOOL)isSameDayWithDate1:(NSDate*)date1 date2:(NSDate*)date2 {
    NSCalendar* calendar = [NSCalendar currentCalendar];

    unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;
    NSDateComponents* comp1 = [calendar components:unitFlags fromDate:date1];
    NSDateComponents* comp2 = [calendar components:unitFlags fromDate:date2];

    return [comp1 day]   == [comp2 day] &&
           [comp1 month] == [comp2 month] &&
           [comp1 year]  == [comp2 year];
}

おすすめ記事