NSDateから日付のみを取り出す方法

NSDate型のオブジェクトから日付のみを取り出すには、NSCalendarクラスの(NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)dateメソッドを使えばできます。なお、unitFlags引数には、使用する項目を指定します。下記例なら、年・月・日・タイムゾーンを指定しています。

NSDate *dateWithHMS = [NSDate date];
NSCalendar *cal = [NSCalendar currentCalendar];
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit |NSTimeZoneCalendarUnit;
NSDateComponents *comps = [cal components:unitFlags fromDate:dateWithHMS];
NSDate *date = [cal dateFromComponents:comps];
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
df.dateStyle = NSDateFormatterLongStyle;
df.timeStyle = NSDateFormatterLongStyle;
NSLog(@"dateWithHMS: %@", [df stringFromDate:dateWithHMS]);
NSLog(@"date: %@", [df stringFromDate:date]);

  • 例ではNSTimeZoneCalendarUnitを指定していますが、タイムゾーンはカレンダーが持っているので上の例ではなくてもいいみたいです。ただ、別のカレンダーを使い、異なるタイムゾーンが設定されている場合は指定しないと狂います。

この記事が役に立った場合、シェアしていただけると励みになります!!