NSDate から年月や日時を取り出す - Objective-C プログラミング

PROGRAM


NSDate から年月や日時を取り出す

NSDate 型のデータ型は、NSCalendar を使用することで、年・月・日や、曜日、時・分・秒、タイムゾーンなどの情報を NSDateComponents 型で取り出すことができます。

例えば NSDate 型の変数 date から、年と月を取得したい場合は、次のようにします。

// NSCalendar を取得します。

NSCalendar* calendar = [NSCalendar currentCalendar];

 

// 取得したい要素(今回は年と月)を表すフラグを添えて、日付からその情報を持った NSDateComponents を取得します。

NSDateComponents* components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit fromDate:date];

 

// これで、NSDateComponents から、年や月を取得することが可能です。

NSInteger year = components.year;

NSInteger month = components.month;

NSDateComponents には、他にも month や hour、weekday などの値も用意されていますが、これらを使用するには、適切なフラグを指定して components:fromDate: メソッドを呼び出しておく必要があります。

 

なお、このメソッドで指定できるフラグは、次のようなものがあります。

NSYearCalendarUnit year 年を取得します。
NSMonthCalendarUnit month 月を取得します。月は 1 から 12 までの番号です。
NSDayCalendarUnit day 日を取得します。
NSHourCalendarUnit hour 時を取得します。
NSMinuteCalendarUnit minute 分を取得します。
NSSecondCalendarUnit second 秒を取得します。
NSWeekCalendarUnit week 1 年の中で、何週目に位置するかを取得できるようですが、iOS 5.0 で非推奨になっていました。iOS 5 以降では NSWeekOfMonthCalendarUnit を使うのが良さそうです。
NSWeekdayCalendarUnit weekday 曜日を取得します。曜日は、日曜日が 1、月曜日が 2、と続いて、土曜日が 7 になります。
NSWeekdayOrdinalCalendarUnit weekdayOrdinal この日の曜日が、月の中で、何週目のその曜日であるかを取得します。1 から始まる値で取得できます。
NSQuarterCalendarUnit quarter 第何四半期にあたるかどうかを取得できるそうですが、とりあえず 2012 年 6 月 23 日で 0 が取得されました。
NSWeekOfMonthCalendarUnit weekOfMonth この月の中で、何週目に当たるかどうかを取得します。1 から始まる値で取得できます。
NSWeekOfYearCalendarUnit weekOfYear 1 年の中で、何週目に位置するかを取得します。1 から始まる値で取得できます。
NSYearForWeekOfYearCalendarUnit yearForWeekOfYear NSWeekOfYearCalendarUnit を計算するのに使った年(2012 など)を取得できるようです。
NSCalendarCalendarUnit calendar このコンポーネントを取得するのに使用したカレンダーのインスタンスが取得できるようです。
NSTimeZoneCalendarUnit timeZone このコンポーネントが表す日付のタイムゾーンです。"Asia/Tokyo (JST) offset 32400" を表す NSTimeZone 型の値を取得できます。
NSEraCalendarUnit era 紀元前か紀元後かといった時代を表す値だそうです。とりあえず 1 が取得できるようでした。

これらのフラグを "|" 記号で連結すれば、それらの内容を NSDateComponents に取り出すことができます。


[ もどる ]