Frage

Ich habe den folgenden Code:

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

Ich möchte es ein Datum in folgendem Format zurück: "2009-04-23"

Aber es gibt: Montag, 23. April 2009 23.27.03 GMT + 03: 00

Was mache ich falsch?

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Sie haben die falsche Methode. Stattdessen versuchen, descriptionWithCalendarFormat:timeZone:locale:

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

Beachten Sie auch, dass das Verfahren ein anderes Format als die in Ihrer Frage erwartet. Die vollständige Dokumentation für das kann hier .

EDIT: Obwohl als Mike erwähnt, sollten Sie wirklich sein NSDateFormatter verwenden. Es gibt einige Probleme mit descriptionWithCalendarFormat:timezone:locale:, dass Apple in der Dokumentation erwähnt.

Andere Tipps

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); 

Beachten Sie auch, dass für die meisten Fälle, NSDateFormatter für seine Flexibilität zu bevorzugen ist.

Es gibt auch einen erheblichen Leistungsvorteil von Wiederverwendung von Datum Formatierer in vielen Anwendungen werden mußte.

Wenn Sie nicht über NSDate -descriptionWithCalendarFormat:timeZone:locale: verfügbar (ich glaube nicht, dass iPhone / Cocoa Touch diese enthält) können Sie verwenden müssen, strftime und Affen um mit einigen C-Strings. Sie können den UNIX-Zeitstempel von einem NSDate mit NSDate -timeIntervalSince1970 erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top