酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

Objective-C NSDateFormatter 日付を文字列に変換[iPhone]

Objective-C で 日付型(NSDate)を任意の文字列(NSString)に変換する方法です。 いつも忘れてGoogle先生に質問に行ってご迷惑をかけてしまうので、先生を安心させてあげるために頑張ります!

February 1st

ソースコード

現在日時を文字列に変換するソースコードをサンプルとして書きます。

objective-c 実装ファイル
1
2
3
4
5
6
7
8
9
10
11
// NsDate => NSString変換用のフォーマッタを作成
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"]]; // Localeの指定
[df setDateFormat:@"yyyy/MM/dd HH:mm:ss"];

// 日付(NSDate) => 文字列(NSString)に変換
NSDate *now = [NSDate date];
NSString *strNow = [df stringFromDate:now];

// ログ出力
NSLog(@"現在日時:%@", strNow);

setDateFormat パラメータの一覧

setDateFormatで指定できるパラメータの一覧です。

G       時代(AD等)
yy      年(下2桁)
yyyy    年(4桁)
MM      月(1〜12)
MMM     月(Jan)
MMMM    月(Janualy)
dd      日(2桁)
H       時(ゼロ埋めなし)
HH      時(2桁、ゼロ埋めあり)
m       時(ゼロ埋めなし)
mm      時(2桁、ゼロ埋めあり)
s       時(ゼロ埋めなし)
ss      時(2桁、ゼロ埋めあり)
z       タイムゾーン

詳細は、W3Cに準拠しているそうなので、日付の表記に関するノートをご確認下さい。

ミリセカンド(ms)まで表示したい場合

上のソースに、ミリセカンド(ms)を取得する処理を追加しました。

Objective-C実装ファイル
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// NsDate => NSString変換用のフォーマッタを作成
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"]]; // Localeの指定
[df setDateFormat:@"yyyy/MM/dd HH:mm:ss"];

// 現在時刻を取得
NSDate* now = [NSDate date];

// ミリセカンド(ms)を取得
NSInteger intMillSec = (NSInteger) floor(([now timeIntervalSince1970] - floor([now timeIntervalSince1970]))*1000);

// 日付(NSDate) => 文字列(NSString)に変換
NSString* strNow = [NSString stringWithFormat:@"%@.%03d", [df stringFromDate: now], intMillSec];

NSLog(@"現在日時:%@", strNow);

以上です。

Thank you very much for your kind notification.

Special Thanks

おすすめの書籍