10
votes

iPhone: Nsdate Convertir GMT en heure locale

J'ai actuellement un appel API me renvoyant une date / heure dans le format: 2010-10-10T07: 54: 01.878926

Puis-je supposer que c'est GMT? Je l'ai également converti sur un objet Nsdate. Y a-t-il un moyen d'utiliser le temps d'iPhone local pour recalculer l'heure?


0 commentaires

4 Réponses :


29
votes
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm";

NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];
NSString *timeStamp = [dateFormatter stringFromDate:[NSDate date]];
[dateFormatter release];

2 commentaires

Comment cela convertit-il GMT en heure locale? Je crois que ça fait le contraire et la conversion locale en GMT à droite?


Bon exemple, mais il convient de l'heure locale en GTM.



1
votes
NSDate *sourceDate = [NSDate dateWithTimeIntervalSince1970:gmtTimestamp];
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
NSInteger sourceGMTOffset = [destinationTimeZone secondsFromGMTForDate:0];
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate];
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
NSDate* destinationDate = [[[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate] autorelease];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm";
[dateFormatter setTimeZone:destinationTimeZone];
NSString *localTimeString = [dateFormatter stringFromDate:destinationDate];

0 commentaires

-2
votes
NSDate *now = [NSDate date];
NSLog(@"%@", [now dateWithCalendarFormat:@"%Y-%m-%d %H:%M:%S" 
              timeZone:[NSTimeZone timeZoneWithName:@"GMT"]]);

1 commentaires

Le message - (nstring *) Datewithcalendarformat: Timezone: n'existe pas dans la documentation d'Apple.



22
votes

Ce code convertira l'heure GMT à l'heure locale du périphérique.

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


1 commentaires

SWIFT : Laisser localDate = nsdate (TimeInterval: NSTIMEINTERM (NSTIMEZONE.SystemTezone (). SECONDESFROMGMT), Sincedate: Date)