Descripción serie de NSDate
-
13-09-2019 - |
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.
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.