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


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


🍄 ソースコード

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

// 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)を取得する処理を追加しました。

// 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.

🎉 参考リンク

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍