酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Objective-Cを使ってNSStringからNSDateへの変換/NSDateからNSStringへの変換

直近で使用したNSDate関係の処理をまとめました。

**NSStringからNSDateへの変換

「2011-06-28 21:23:45」を文字列をNSDateFormatterを使ってNSDate型へ変換しました。

|objc| // フォーマットされる日付文字列 NSString* dateString = @"2011-06-28 21:23:45";

NSDateFormatter* fmt = [[[NSDateFormatter alloc] init] autorelease]; [fmt setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; // フォーマット文字列を設定

NSDate* formatterDate = [fmt dateFromString:dateString]; NSLog(@"出力:%@", formatterDate); // 出力:2011-06-28 12:23:45 +0000 ||<

文字列からフォーマットする時に不要な文字列が含まれている場合は、アポストロフィー(')で文字を挟む事でNSDateFormatterに無視させる事が可能です。以前書いた下記の記事をご参照ください。

**NSDateからNSStringへの変換

NSDateからNSStringへ変換する際にもNSDateFormatterを使う事が出来ます。

|objc| // 今日の日付 NSDate* nowDate = [NSDate date];

NSDateFormatter fmt = [[[NSDateFormatter alloc] init] autorelease]; [fmt setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; // どんな文字列で取り出すかを設定 NSString dateString = [fmt stringFromDate:nowDate]; NSLog(@"出力:%@", dateString); // 出力:2011-06-28 18:40:39
||<

**指定月の末日を求める

直接、指定月の末日を求める事は出来ません。例えば2011年6月の末日を調べる場合は、その次の7月1日から1日引いてやります。

|objc| // フォーマットされる日付文字列(2011年7月1日) NSString* dateString = @"20110701";

// 一旦、2011年7月1日でNSDateを作成する NSDateFormatter fmt = [[[NSDateFormatter alloc] init] autorelease]; [fmt setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; [fmt setDateFormat:@"yyyyMMdd"]; // フォーマット文字列を設定 NSDate formatterDate = [fmt dateFromString:dateString];

// 1日前へ巻き戻す(マイナス86400秒) formatterDate = [formatterDate addTimeInterval:-12460*60]; NSLog(@"出力:%@", formatterDate); // 出力:2011-06-30 00:00:00 +0000 ||<