NSDateで取得した日付をカスタマイズした形式で表示したい。
日付だけを比較したいのに時刻が邪魔でうまくいかない…
そんな状況に陥ったので解決した方法を記しておきます。
いくつか方法はあると思いますが、取得したデータの時刻は比較しないようにすることで対処しました。
##実装
NSDateFormatter *dateFormatter = [NSDateFormatter new];
//GMTとの差を加えない
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
//表示させる形式を指定
[dateFormatter setDateFormat:@"yyyy年MM月dd日"];
//dateFormatterを使い今日の日付を一度文字列にしてからNSDate型にする
NSDate *today = [dateFormatter dateFromString:[dateFormatter stringFromDate:[NSDate date]]];
//データベースにTEXTで保存しておいたdbSampleDateをdateFormatterを使いNSDate型にする
NSDate *formatSampleDate =[dateFormatter dateFromString:dbSampleDate];
//todayとformatSampleDateを比較する
NSComparisonResult result = [today compare : formatSampleDate];
NSLog(@"今日:%@ と 期限日:%@ と 元データ:%@" , today , formatSampleDate , dbSampleDate);
NSLog(@"比較結果:%ld" , (long)result);
-1 = NSOrderedAscending
0 = NSOrderedSame
1 = NSOrderedDescending
あとはresult
を煮る(swich
)なり焼く(if
)なり好きにして〜
##参考
日付をNSComparisonResultで比較するときに、NSDateから時間部分を取り除く