NSDateを日付に変換する

はじめにNSDateComponentsに一度変換する必要がある。この変換にはNSCalendarを必要とする。

- (NSDateComponents *)componentsFromDate:(NSDate *)date
                            withCalendar:(NSCalendar *)calendar
{
  /* calendarが指定されていない場合には、現在のカレンダーを指定する */
  if (!calendar)
  {
    calendar = [NSCalendar currentCalendar];
  }
  
  /* 日付のコンポーネントとして、年月日時分秒を取得する */
  static unsigned int unitFlags =
      NSYearCalendarUnit |
      NSMonthCalendarUnit |
      NSDayCalendarUnit |
      NSHourCalendarUnit |
      NSMinuteCalendarUnit |
      NSSecondCalendarUnit;
    
  return [calendar components:unitFlags
                     fromDate:date];
}

NSDateComponentsを取得後は、下記のように日付を取得する。

  NSDate *date = [NSDate date];

  NSDateComponents *components = [self componentsFromDate:date
                                             withCalendar:nil];

  NSLog(@"%d%d%d%d%d%d秒",
      [components year],
      [components month],
      [components day],
      [components hour],
      [components minute],
      [components second]);