19

次のコードがあります。

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

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

しかし、次のように返されます: 2009 年 4 月 23 日木曜日、午後 11:27:03 GMT+03:00

私は何を間違っていますか?

前もって感謝します。

4

4 に答える 4

91
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); 
于 2010-09-20T09:03:28.033 に答える
32

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

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

また、メソッドは質問の形式とは異なる形式を想定していることにも注意してください。そのための完全なドキュメントは、ここにあります。

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

于 2009-04-23T20:33:40.417 に答える
10

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

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

于 2009-04-24T14:45:39.870 に答える
1

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

于 2009-04-23T20:36:28.337 に答える