Domanda

Ho il seguente codice:

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

lo voglio restituire una data nel seguente formato: "2009-04-23"

Ma ritorna: Giovedi 23 mese di aprile, 2009 23:27:03 GMT + 03: 00

Che cosa sto facendo di sbagliato?

Grazie in anticipo.

È stato utile?

Soluzione

Si utilizza il metodo sbagliato. Invece di cercare descriptionWithCalendarFormat:timeZone:locale:

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

Si noti inoltre che il metodo si aspetta un formato diverso da quello nella sua interrogazione. La documentazione completa per che può essere trovato qui .

EDIT: Anche se, come ha osservato Mike, si dovrebbe essere utilizzando NSDateFormatter. Ci sono alcuni problemi con descriptionWithCalendarFormat:timezone:locale: che Apple cita nella documentazione.

Altri suggerimenti

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

Si noti inoltre che per la maggior parte dei casi, NSDateFormatter è da preferire per la sua flessibilità.

C'è anche un vantaggio significativo delle prestazioni per essere avuto dal riutilizzo di data formattatori in molte applicazioni.

Se non si dispone di NSDate -descriptionWithCalendarFormat:timeZone:locale: disponibile (non credo iPhone / Cocoa Touch include questo) potrebbe essere necessario utilizzare strftime e la scimmia in giro con alcune stringhe di C-stile. È possibile ottenere il timestamp UNIX da un NSDate utilizzando NSDate -timeIntervalSince1970.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top