Pregunta

Tengo el siguiente código:

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

Quiero que vuelva una fecha en el siguiente formato: "2009-04-23"

Pero regresa: Jueves 23 de abril de, 2009 11:27:03 PM GMT + 03: 00

¿Qué estoy haciendo mal?

Gracias de antemano.

¿Fue útil?

Solución

Está utilizando el método equivocado. En lugar de tratar descriptionWithCalendarFormat:timeZone:locale:

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

Tenga en cuenta también que el método está esperando un formato diferente a la que en su pregunta. La documentación completa para los que se puede encontrar aquí .

EDIT: Aunque como se ha señalado Mike, que realmente debería estar usando NSDateFormatter. Hay algunos problemas con descriptionWithCalendarFormat:timezone:locale: que Apple menciona en la documentación.

Otros consejos

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

Tenga en cuenta también que para la mayoría de los casos, NSDateFormatter es preferible por su flexibilidad.

También hay un beneficio significativo de rendimiento que se obtienen de la reutilización de los formateadores de fecha en muchas aplicaciones.

Si usted no tiene NSDate -descriptionWithCalendarFormat:timeZone:locale: disponible (no creo iPhone / Cocoa Touch incluye esto) puede que tenga que utilizar strftime y alrededor de mono con algunas cadenas estilo C. Usted puede obtener la marca de tiempo UNIX desde un NSDate -timeIntervalSince1970 usando NSDate.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top