2013-08-29 4 views
12

コードを貼り付けた状態で、NSDateをログに記録しようとしています。私はここで間違って何をしていますか?どのようにNSDateをNSLogするのですか?

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"YYYY-MM-dd"]; 
NSDate *todaysDate; 
todaysDate = [NSDate date]; 
NSLog(@"Todays date is %@",formatter); 
+2

'のNSLog(、todaysDate "日付は%@である" @);' - もちろん、日付は長い形式とUTCタイムゾーンに記録されますので、あなたは理解する必要がありますそれ。フォーマッタを使用するには 'NSLog(@"日付は%@ "、[フォーマッタstringFromDate:todaysDate]);'です。 –

+1

無関係ですが、 'YYYY'ではなく' yyyy'を使用してください。詳細はhttp://stackoverflow.com/questions/3063068/weird-behavior-when-creating-an-nsdate-of-january-the-1st-and-the-2ndを参照してください。 – Anna

答えて

15

あなたがしなければならないです:あなたは間違ってやっている

NSLog(@"Todays date is %@",[formatter stringFromDate:todaysDate]); 
4

何がフォーマッタに日付を関連付けるために何を行っていないです。だから、あなたはこのような何かしたいと思う:

NSLog(@"Todays date is %@", [formatter stringFromDate:todaysDate]; 

NSDateが(ちょうど日付情報)を書式設定については何も知らない、とNSDateFormatter doesntのを実際にそれらをフォーマットするだけでどのように、日付について何を知っています。したがって、人間が読めるように表示するために、実際に日付をフォーマットするには、-stringFromDate:のようなメソッドを使用する必要があります。

何が必要であれば、単に日付情報を参照することで、特定のフォーマットを必要としない、あなたは日付をログに記録するフォーマッタを必要はありません。

NSLog(@"Todays date is %@", todaysDate); 

はあなたを与えるために正常に動作しますNSDateオブジェクトの-description私はユーザーに表示するものは何も使用しません(NSDateFormatterを使用してください)。これはデバッグしていて、NSDateオブジェクトに関する情報を参照する必要がある場合に便利です。

1

コンプリート例:

NSDate *today = [NSDate date]; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"YYYY-MM-dd"]; 
    NSLog(@"%@",[formatter stringFromDate:today]); 
    [formatter release]; 
関連する問題