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.

🐮 参考リンク

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)