omega contraindicaciones beneficios objective-c ios format nsdate

objective-c - contraindicaciones - omega 3 beneficios



crear un NSDate a partir de una cadena (4)

Hmmm, te has equivocado por un par de razones

  1. El NSDateFormatter es estricto y usted no ha sido.
  2. no proporcionaste str to dateFromString:

NSString* str = @"3/15/2012 9:15 PM"; NSDateFormatter* formatter = [[NSDateFormatter alloc]init]; [formatter setDateFormat:@"MM/dd/yyyy HH:mm a"]; NSDate* date = [formatter dateFromString:str]; NSLog(@"%@",date);

Tengo una NSString como esta: @"3/15/2012 9:15 PM" y me gustaría convertirla a NSDate , he hecho así:

NSString *str =@"3/15/2012 9:15 PM"; NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; [formatter setDateFormat:@"mm/dd/yyyy HH:mm"]; NSDate *date = [formatter dateFromString:]; NSLog(@"%@", date); // date = null

¿Puedes ayudarme por favor, gracias?


Tu formateador está equivocado De acuerdo con la documentación de NSDateFormatter, debe ser "MM / dd / aaaa h: mm a". Es probable que también desee establecer la configuración regional como se indica en la Guía de formato de fecha:

Si está trabajando con fechas de formato fijo, primero debe establecer la configuración regional del formateador de fecha en algo apropiado para su formato fijo. En la mayoría de los casos, la mejor ubicación para elegir es en_US_POSIX, una configuración regional que está diseñada específicamente para generar resultados en inglés de EE. UU. Independientemente de las preferencias del usuario y del sistema.

Prueba esto:

NSString *str = @"3/15/2012 9:15 AM"; NSLocale *enUSPOSIXLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]; NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; [formatter setLocale:enUSPOSIXLocale]; [formatter setDateFormat:@"MM/dd/yyyy h:mm a"]; NSDate *date = [formatter dateFromString:str]; NSLog(@"%@",date);

Salidas:

2012-03-19 12:37:27.531 Untitled[6554:707] 2012-03-15 08:15:00 +0000


Usa la siguiente solución

NSString *str = @"3/15/2012 9:15 PM"; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"MM/dd/yyyy HH:mm a"; NSDate *date = [formatter dateFromString:str]; NSLog(@"%@", date);

Edición: Lo sentimos, el formato debe ser el siguiente:

formatter.dateFormat = @"MM/dd/yyyy hh:mm a";

Y el tiempo mostrado será el tiempo GMT. Entonces, si sumas / restas la zona horaria, sería 9:15 PM.

Edición: # 2

Utilice como abajo. Usted obtendría el tiempo exacto también.

NSString *str = @"3/15/2012 9:15 PM"; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"MM/dd/yyyy hh:mm a"; NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; formatter.timeZone = gmt; NSDate *date = [formatter dateFromString:str]; NSLog(@"%@",date);


NSString *str =@"3/15/2012 9:15 PM"; NSDateFormatter *dateformatter = [[NSDateFormatter alloc]init]; [dateformatter setDateFormat:@"MM/dd/yyyy"]; NSArray *firstSplit = [str componentsSeparatedByString:@" "]; NSDate *dateSelected = [dateformatter dateFromString:[firstSplit objectAtIndex:0]]; [dateformatter setDateFormat:@"mm:ss"]; NSDate *dateSelected2 = [dateformatter dateFromString:[firstSplit objectAtIndex:1]]; NSLog(@"%@",[dateformatter stringFromDate:dateSelected2]); NSLog(@"%@",[dateformatter stringFromDate:dateSelected]);