Convertir l'heure GMT en heure locale

J'ai l'heure GMT actuelle – 2013-05-15 08:55 AM

Mon heure locale est – 15/05/2013 14h06 et le timezone est – Asie / Kolkata

J'ai essayé de convertir le GMT ci-dessus à mon heure locale avec ce code

NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"Asia/Kolkata"]; [dateFormatter setTimeZone:sourceTimeZone]; // timeStamp - is the above GMT time NSDate *dateFromSsortingng = [dateFormatter dateFromSsortingng:timeStamp]; NSLog(@"local time is %@",dateFromSsortingng); 

mais cela me donne le time comme – 2013-05-14 19:04:00 +0000 au lieu de 2013-05-14 02:06 PM

Pourquoi cela arrive? s'il vous plaît aidez-moi à effacer cela.Merci à l'avance

Rien ne va mal, une instance de NSDate n'aura jamais de timezone (eh bien il le fera mais c'est toujours GMT, indiqué par le timezone +0000 dans la description de la date).

Ce que vous dites à datformatter dans votre code, c'est que le timezone de la date que vous voulez parsingr est Asia/Kolkata mais vous voulez qu'il soit GMT .

Vous devez d'abord créer un object NSDate partir de la string de date d'input avec le timezone défini sur le fuseau GMT correct, GMT comme indiqué.

 NSTimeZone *gmtTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; [dateFormatter setTimeZone:sourceTimeZone]; NSDate *dateFromSsortingng = [dateFormatter dateFromSsortingng:timeStamp]; NSLog(@"Input date as GMT: %@",dateFromSsortingng); 

Ensuite, lorsque vous présentez la date sous forme de string, utilisez:

 NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithName:@"Asia/Kolkata"]; [dateFormatter setTimeZone:sourceTimeZone]; NSSsortingng *dateRepresentation = [dateFormatter ssortingngFromDate:dateFromSsortingng]; NSLog(@"Date formated with local time zone: %@",dateRepresentation); 

Le moyen le plus court que j'ai trouvé pour convertir l'heure GMT à votre timezone local est

  NSDate* localDateTime = [NSDate dateWithTimeInterval:[[NSTimeZone systemTimeZone] secondsFromGMT] sinceDate:dateInGMT]; 

En outre, pour convertir cette valeur de date en string

 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"HH:mm:ss"];//use the formatted as per your requirement. //Optionally for time zone converstions [formatter setTimeZone:[NSTimeZone timeZoneWithName:@"..."]]; NSSsortingng *localTimeDateSsortingng = [formatter ssortingngFromDate:localDateTime]; 
 NSLog(@"local time is %@",[dateFormatter ssortingngFromDate: dateFromSsortingng]); 
 NSTimeZone* gmtTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; NSTimeZone* localTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"Asia/Kolkata"]; NSDateFormatter *gmtDateFormatter = [[NSDateFormatter alloc] init]; [gmtDateFormatter setTimeZone:gmtTimeZone]; NSDate *date = [gmtDateFormatter dateFromSsortingng:timestamp]; NSDateFormatter *localDateFormatter = [[NSDateFormatter alloc] init]; [localDateFormatter setTimeZone:localTimeZone]; NSLog(@"local time is %@",[localDateFormatter ssortingngFromDate:date]); 

Utiliser timeZoneWithName

 NSDate *date=[[NSDate alloc]init]; NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init]; [timeFormat setTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Kolkata"]]; [timeFormat setDateFormat:@"HH:mm"]; NSSsortingng *dateStr=[timeFormat ssortingngFromDate:date];