stringa di descrizione NSDate
-
13-09-2019 - |
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.
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
.