web-dev-qa-db-ja.com

NSDateの文字列の説明

私は次のコードを持っています:

[ [NSDate date] descriptionWithLocale: @"yyyy-MM-dd" ]

次の形式で日付を返したい:「2009-04-23」

2009年4月23日木曜日11:27:03 PM GMT + 03:00

私は何が間違っているのですか?

前もって感謝します。

19

間違った方法を使用しています。代わりに descriptionWithCalendarFormat:timeZone:locale: を試してください

[[NSDate date] descriptionWithCalendarFormat:@"%Y-%m-%d"
                                    timezone:nil
                                      locale:nil];

また、メソッドは、質問のフォーマットとは異なるフォーマットを想定していることにも注意してください。そのための完全なドキュメントは見つけることができます ここ

編集:マイクが指摘したように、実際にはNSDateFormatterを使用する必要があります。 Appleがドキュメントで言及しているdescriptionWithCalendarFormat:timezone:locale:にはいくつかの問題があります。

32
Sebastian Celis
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); 
91
situee

また、ほとんどの場合、柔軟性のためにNSDateFormatterが優先されることに注意してください。

また、多くのアプリで日付フォーマッターを再利用することで、パフォーマンスが大幅に向上します。

10
Mike Abdullah

NSDate -descriptionWithCalendarFormat:timeZone:locale:を利用できない場合(iPhone/Cocoa Touchにこれが含まれているとは思わない)、 strftime を使用し、Cスタイルの文字列を使用する必要がある場合があります。 NSDate -timeIntervalSince1970を使用して、NSDateからUNIXタイムスタンプを取得できます。

1
pix0r