2010-12-02 12 views
10

Esto podría ser una pregunta tonta, pero no puedo encontrar la respuesta aquí o en la documentación.Convertir NSString de una fecha en un NSDate

Quiero convertir un NSString como @ "9/22/2010 3:45 PM" a un NSDate.

sé utilizar NSDateFormatter, pero los problemas son

  1. El mes podría ser uno o dos dígitos
  2. Del mismo modo, la fecha podría ser uno o dos dígitos
  3. horas podría ser uno o dos dígitos
  4. ¿Qué debo hacer con AM/PM?

Respuesta

26
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"MM/dd/yyyy h:mm a"]; 
NSDate *date = [dateFormat dateFromString:dateStr]; 
[dateFormat release]; 

no hay ningún problema en 2 días dígitos ó 2 dígitos para el mes.

Esto debe ayudarlo.

+0

Esto debería funcionar. No olvides lanzar 'dateFormat'. –

+0

Hm no funcionó. No estoy seguro de cómo lo está obteniendo. – Kevin

+0

Obtuve de este 20/11/2010 2:00 PM a 2009-12-27 19:00:00 GMT. Lo cual no es lo mismo, obviamente. – Kevin

3

Usted puede analizar un NSString en un NSDate utilizando la clase NSDateFormatter. Ver the documentation para más información:

Las instancias de NSDateFormatter crean representaciones de cadena de NSDate (y NSCalendarDate) objetos, y convertir las representaciones textuales de las fechas y horas en objetos NSDate.

2

que estaba teniendo el mismo problema, no sé por qué NSDateFormatter no está funcionando para mí (IOS5 - Xcode 4.3.2), pero esto funcionó para mí:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; 
[dateFormatter setDateFormat:@"dd-MM-yyyy"]; 
NSString *dateString = @"05-06-2012"; 
NSDate *date; 
NSError *error = nil; 
if (![dateFormatter getObjectValue:&date forString:dateString range:nil error:&error]) { 
    NSLog(@"Date '%@' could not be parsed: %@", dateString, error); 
} 
[dateFormatter release]; 
Cuestiones relacionadas