井原プロダクトのBLOG

Since 2013。個人でアプリ作っています。

2つのNSDate型データの年月日だけを比較する

まーだ Objective-Cでプログラミングしてんのかよ!?って感もありますが、、、
既存のAPP、既に8000行くらい書いちゃってるし、Swiftに移行するモチベーションも無いんですよねー。

ところで、軽くハマったんですが、別のタイミングで取得されたNSDate型のデータで、時間は関係なく同じ年月日なのかどうか?だけを比較するのに NSCalendarの componentsを使ってみました。が、、、違う日なのに同じって判定するんで「おかしいなぁ、」と思ったら、、、

誤)
dateCompos1.date == dateCompos2.date

正)
dateCompos1.day == dateCompos2.day

でした。dateってやってもエラーにはならないんですけど空っぽなので常に正になっちゃいます。やれやれ。

-(BOOL) isYMDSame : (NSDate *) date1 : (NSDate *) date2 {
    //NSDateから年月日を取得する
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *dateCompos1 = [calendar components:
                                NSCalendarUnitYear |
                                NSCalendarUnitMonth |
                                NSCalendarUnitDay
                                fromDate:date1];

    NSDateComponents *dateCompos2 = [calendar components:
                                NSCalendarUnitYear |
                                NSCalendarUnitMonth |
                                NSCalendarUnitDay
                                fromDate:date2];
    
    if (dateCompos1.year == dateCompos2.year &&
        dateCompos1.month == dateCompos2.month &&
        dateCompos1.day == dateCompos2.day) {
        return YES;
    } else {
        return NO;
    }
}