GMT fuseau horaire de conversion en objective-c
Je suis en train de convertir nsstring à nsdate, puis à la systemtimezone. Est mon code de droit? Toute aide appréciée.
NSString *str=@"2012-01-15 06:27:42";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehaviorDefault];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *dateFromString = [dateFormatter dateFromString:str];
NSDate* sourceDate = dateFromString;
NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT-07:00"];
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:sourceDate];
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate];
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
NSDate* destinationDate = [[[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate] autorelease];
bottomLabel2.text=[NSString stringWithFormat:@"- %@ -",destinationDate];
Le code de résultat est 2012-01-15 06:27:42 +0000 qui est la même que la source!
Est-ce que mon code de droit?" n'est pas la question à se poser ici. codereview.stackexchange.com
Je ne pense pas que l'affiche originale est de demander un examen, mais a peut-être pas clairement le problème. De toute façon, j'ai répondu ci-dessous.
Je ne pense pas que l'affiche originale est de demander un examen, mais a peut-être pas clairement le problème. De toute façon, j'ai répondu ci-dessous.
OriginalL'auteur stefanosn | 2012-01-15
Vous devez vous connecter pour publier un commentaire.
Je pense je peux voir quel est le problème ici, c'est cette ligne:
GMT-07:00
n'est pas une abréviation de cette méthode. Si vous appelez[NSTimeZone abbreviationDictionary]
vous obtiendrez un dictionnaire contenant tous disponibles abréviations. Vous devez utiliser le sigle (par exemple, " PST " pour, Heure normale du Pacifique), et non pas le format "GMT-07:00".Vous faire gagner du temps, voici la liste complète des abréviations à l'aide de
NSTimeZone
.Une chose de plus à travailler correctement, vous devez faire bottomLabel2.text=[NSString stringWithFormat:@"- %@ -",[dateFormatter stringFromDate:destinationDate]];
OriginalL'auteur lxt
La liste ci-dessus de “prise en charge" des abréviations est aussi une liste abrégée..
si vous désirez voir une liste assez complète, voici un peu de code pour générer:
(et une petite partie de la sortie ci-dessous pour afficher certains qui ne sont pas dans la liste ci-dessus)
malheureusement, le système d'exploitation de ne pas utiliser ces zones de), vous aurez à faire une conversion à -0600 types
OriginalL'auteur hokkuk