2012-09-14 17 views
11

Tengo una secuencia "2012-09-16 23:59:59 JST" Quiero convertir esta cadena de fecha en NSDate.NSFecha de la cadena

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss Z"]; 
NSDate *capturedStartDate = [dateFormatter dateFromString: @"2012-09-16 23:59:59 JST"]; 
NSLog(@"%@", capturedStartDate); 

Pero no está funcionando. Da valor nulo. Por favor, ayuda ..

Respuesta

31

Al utilizar tiempo de 24 horas, la hora especificador es necesario que haya una H mayúscula como esto:

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"]; 

Marque aquí para los especificadores correctas: http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns

Sin embargo, es necesario establecer la configuración regional para el formateador fecha:

// Set the locale as needed in the formatter (this example uses Japanese) 
[dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"]]; 

código de trabajo completo:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zzz"]; 
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"]]; 
NSDate *capturedStartDate = [dateFormatter dateFromString: @"2012-09-16 23:59:59 JST"]; 
NSLog(@"Captured Date %@", [capturedStartDate description]); 

salidas (GMT):

Captured Date 2012-09-16 14:59:59 +0000 
+0

bueno @danielbeard, como u dijo que mostrará la hora GMT, el cual mostrará diferencia de tiempo de 9 horas desde la fecha exacta. Cómo obtener la fecha exacta de la cadena ... ?? .. – NiKKi

+0

Las fechas mismas no tienen zonas horarias, pero puede obtener una representación de cadena en un huso horario con 'stringFromDate' con NSDateFormatter configurado anteriormente. – danielbeard

+0

Consulte aquí para obtener más detalles http://stackoverflow.com/questions/1862905/nsdate-convert-date-to-gmt – danielbeard

1
NSString *dateString = @"01-02-2010"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

// this is imporant - we set our input date format to match our input string 
// if format doesn't match you'll get nil from your string, so be careful 

[dateFormatter setDateFormat:@"dd-MM-yyyy"]; 
NSDate *dateFromString = [[NSDate alloc] init]; 
// end 
dateFromString = [dateFormatter dateFromString:dateString]; 
[dateFormatter release]; 
6
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"]; 
NSDate *capturedStartDate = [dateFormatter dateFromString: @"2012-09-16 23:59:59 GMT-08:00"]; 
NSLog(@"%@", capturedStartDate); 
+1

Esto podría ser útil para alguien algún día: formato de indicación de fecha y hora Keen.io '[formatter setDateFormat: @" yyyy -MM-dd'T'HH: mm: ss.SSS'Z '"];' No necesité configurar la configuración regional. –

+0

La respuesta fue útil para mí hoy;) –