2011-07-18 2 views
2

Je reçois le format de date suivant dans mon application.Créer des objets NSDate en fonction du fuseau horaire

07/18/2011/04/45/EDT 

I sous-chaîne à "07/18/2011/04/45" et "EDT". En utilisant le code suivant, je compose une date.

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"MM/dd/yyyy/HH/mm"]; 
    [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EDT"]]; 

    NSDate *currentServerDate = [dateFormatter dateFromString:formattedDateString]; 
    NSLog(@"currentServerDate %@",currentServerDate); 

Cependant quand j'imprimer le NSDate (créé à l'aide ci-dessus formattter) il imprimer comme « 2011-07-18 14:15:00 0530 » où 0530 est mon fuseau horaire. J'ai besoin de composer le relatif au fuseau horaire EDT. Comment je fais ça?

Merci

+0

S'il vous plaît montrer le code où vous créez la date et l'imprimer. – JeremyP

+0

OK mis à jour le post avec cela. – Dilshan

Répondre

3

Je pense que le fuseau horaire est probablement pas ce que vous pensez. Essayez de consigner le fuseau horaire retourné par timeZoneWithAbbreviation: et de voir ce qu'il vous dit. En outre, consultez la documentation à laquelle je suis lié:

En général, vous êtes découragé d'utiliser des abréviations à l'exception d'instances uniques telles que «UTC» ou «GMT». Les abréviations de fuseau horaire ne sont pas standardisés et donc une abréviation donnée peut avoir plusieurs significations, par exemple, « EST » désigne heure de l'Est à la fois aux États-Unis et en Australie

+0

Merci Jeremy semble que c'est le problème. Votez. Merci. – Dilshan

0

Par la méthode par défaut NSDate « s description montre date GTM avec le décalage des paramètres régionaux de votre système. Si vous souhaitez Pring NSDate en utilisant NSLog utiliser l'un des éléments suivants:

NSLog(@"date = %@", [date descriptionWithLocale:some_other_locale]) 
NSDateFormatter *formatter = ... 
NSLog(@"date = %@", [formatter stringFromDate:date]); 
Questions connexes