2015-03-09 1 views
0

Il semble que le fuseau horaire d'Apple ait des problèmes pour moi maintenant. J'ai testé le code suivant ci-dessous et il ne fonctionne pas correctement. C'est ce que j'ai jusqu'ici.iOS: Problème de fuseau horaire survenant

NSDate *today = [NSDate date]; 

NSDateFormatter *estDf = [[NSDateFormatter alloc] init]; 
[estDf setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]]; 
[estDf setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 

    NSString *stringDate = [estDf stringFromDate:today]; 
    NSDate *todaydateadjusted = [estDf dateFromString:stringDate]; 

    NSLog(@"Todays date is %@",[estDf stringFromDate:todaydateadjusted]); 

Ceci est ma réponse NSLog.
Todays date is 2015-03-09 16:25:02

Je m'attendais à 17:25:02 pas à 16:25:02. Comme il est 5 heures du matin, il est temps d'imprimer 17 au lieu de 16. Quelqu'un d'autre a ce problème? Peut-être que quelque chose ne va pas avec mon code.

+0

Modifier : J'ai essayé EDT et le même résultat –

+0

Si par hasard vous avez eu une delorea n rouler avec un étranger, je t'envie. Comme le disent les réponses, votre temps est écoulé: http://www.timeanddate.com/time/zones/est –

Répondre

0

L'heure d'été est en ce moment en cours. Ne devriez-vous pas utiliser EDT à la place?

L'autre chose est l'abréviation du nom de fuseau horaire par rapport au fuseau horaire. Jetez un oeil à cet exemple - je l'ai écrit dans Swift, mais je pense qu'il devrait être facile à comprendre et à traduire en ObjC.

var now = NSDate() 
var df = NSDateFormatter() 
df.timeZone = NSTimeZone(abbreviation: "EDT") 
//df.timeZone = NSTimeZone(name: "EDT") <- wrong 
df.dateFormat = "yyyy-MM-dd HH:mm:ss" 
let edt = df.stringFromDate(now) 

Si vous souhaitez utiliser le nom de la zone à temps plein, utilisez par exemple df.timeZone = NSTimeZone(name: "America/New_York")

+0

À quelle heure est-il imprimé pour vous maintenant? –

+0

Il imprime correctement 18h30. Assurez-vous que vous utilisez EDT avec abréviation ou America/New_York ou similaire pour timeZoneWithName. À ce stade votre code est pour timeZoneWithName, mais vous passez l'abréviation. Cela donne un temps fictif pour moi. – MirekE

0

vous devez changer ceci:

[estDf setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]]; 

à ceci:

[esfDf setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EDT"]]; 
+0

OK, cela semble résoudre le problème. –