2011-09-26 3 views
0

Je dois définir une chaîne de format pour un DateFormatter pour convertir un NSString en NSDate.en conservant le fuseau horaire dans NSDateFormatter

La chaîne est au format: 2011-01-31 12:45:00 +0200 (AMJ h: m: s fuseau horaire)

J'utilise le format: @"yyyy'-'MM'-'dd' 'HH':'mm':'ss' 'Z", mais le fuseau horaire est converti en +0000 et l'heure est réglée, de sorte qu'un chaîne comme: 2011-01-31 12:45:00 +0200 est converti en: 2011-01-31 10:45:00 +0000

Le code est ici:

- (NSDate *) dateForString: (NSString *)dateString 
{ 
    NSDateFormatter *dateFormatter; 
    NSLocale *enUSPOSIXLocale; 
    NSDate *date; 

    dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
    enUSPOSIXLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]; 

    [dateFormatter setLocale:enUSPOSIXLocale]; 
    [dateFormatter setDateFormat:@"yyyy'-'MM'-'dd' 'HH':'mm':'ss' 'Z"]; 
    // [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 
    date = [dateFormatter dateFromString:dateString]; 
    return date; 
} 

Répondre

1

Ce comportement est tout à fait attendre lors de l'utilisation NSDate - NSDate représente un moment dans le temps si dans votre cas, la 2 Date/les temps sont équivalents.

Assurez-vous simplement que lorsque vous affichez la date à l'aide de la commande a dateFormatter, définissez le fuseau horaire du formateur de date sur la manière dont vous souhaitez qu'il s'affiche.

Questions connexes