2011-12-09 10 views
18

tengo una cadena con el tiempo en GMT y quiero hacerlo de acuerdo a la zona horaria del sistema, pero no su trabajo correctamente -NSDateFormatter and time zone issue?

NSLog(@"Time Str = %@",Time); 

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"dd-MM-yyyy hh:mm a"]; 

[NSTimeZone resetSystemTimeZone]; 

NSLog(@"system time zone = %@",[NSTimeZone systemTimeZone]); 

[dateFormat setTimeZone:[NSTimeZone systemTimeZone]]; 

NSDate *date = [dateFormat dateFromString:Time]; 

[dateFormat setTimeZone:[NSTimeZone systemTimeZone]]; 
NSLog(@"date from string = %@",date); 
NSLog(@"string from date = %@",[dateFormat stringFromDate:date]); 

de salida en la consola -

/////// ////////////////////////////////////////////////// ///////////////////////////////////////

Time Str = 09-12- 2011 07:57 AM

zona horaria del sistema = Asia/Calcuta (IST) desplazamiento 19800

fecha de cadena = 2011-12-09 02:27:00 +0000

cadena a partir de la fecha = 09-12-2011 07:57 AM

////////// ////////////////////////////////////////////////// ////////////////////////////////////

Calcuta es 5: 30 a GMT, por lo la fecha de entrada debe ser 1:27 pero muestra 02:27. Además, cuando tomo una cadena a partir de esta fecha y me muestra el mismo problema que solía marcar, quiero que la cadena se actualice de acuerdo con la zona horaria del sistema.

Gracias

+0

Si debe ser debido a 2:27 07:57-05:30 = 02:27, 01:27, no. –

Respuesta

48

Si la cadena de fecha en GMT No puede utilizar su zona horaria del sistema para crear la NSDate del NSString.

reemplazar la primera ocurrencia de [dateFormat setTimeZone:[NSTimeZone systemTimeZone]];

con [dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

+9

Si quiero que mi aplicación funcione en cualquier zona horaria, ¿qué debo hacer? –

+0

necesita usar el GMT timeZone estándar y convertirlo a la zona horaria local según se requiera. – Aashish