私は次のコードを持っています:
[ [NSDate date] descriptionWithLocale: @"yyyy-MM-dd" ]
次の形式で日付を返したい:「2009-04-23」
2009年4月23日木曜日11:27:03 PM GMT + 03:00
私は何が間違っているのですか?
前もって感謝します。
間違った方法を使用しています。代わりに descriptionWithCalendarFormat:timeZone:locale:
を試してください
[[NSDate date] descriptionWithCalendarFormat:@"%Y-%m-%d"
timezone:nil
locale:nil];
また、メソッドは、質問のフォーマットとは異なるフォーマットを想定していることにも注意してください。そのための完全なドキュメントは見つけることができます ここ 。
編集:マイクが指摘したように、実際にはNSDateFormatter
を使用する必要があります。 Appleがドキュメントで言及しているdescriptionWithCalendarFormat:timezone:locale:
にはいくつかの問題があります。
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];
[dateFormatter release]; // delete this line if your project uses ARC
NSLog(@"%@",dateString);
また、ほとんどの場合、柔軟性のためにNSDateFormatter
が優先されることに注意してください。
また、多くのアプリで日付フォーマッターを再利用することで、パフォーマンスが大幅に向上します。
NSDate -descriptionWithCalendarFormat:timeZone:locale:
を利用できない場合(iPhone/Cocoa Touchにこれが含まれているとは思わない)、 strftime を使用し、Cスタイルの文字列を使用する必要がある場合があります。 NSDate -timeIntervalSince1970
を使用して、NSDateからUNIXタイムスタンプを取得できます。