2010-09-17 8 views
4

J'ai un objet NSString que je convertis en NSDate à l'aide de NSDateFormatter. Maintenant, le code fonctionne bien ici avec tout le système d'exploitation, mais il crée une sortie différente à l'ajout du client (région des États-Unis). Voici le code que j'utilise.Problème de conversion NSString vers NSDate

NSDateFormatter *formate = [[[NSDateFormatter alloc] init] autorelease]; 
[formate setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
NSString *strConcat = @"2010-09-24 17:30:00"; 
NSDate *date = [formate dateFromString:strConcat]; 
NSLog(@"Output :%@",date); 

Sortie à ma fin ------- 2010-09-24 17:30:00 - 0700 sortie à la fin du client ---- 2010-09-25 00:30:00 GMT Quelqu'un peut-il suggérer où est le problème?

Merci Pratik Goswami

Répondre

4

La seule différence de sortie que je remarque est le temps est différent. Si vous ne définissez pas explicitement la propriété timeZone du formateur, il utilisera le fuseau horaire local du système. Si vous attendez le temps à l'être exactement le même de vous et votre client:

[formate setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 

Cela assurerait la sortie est toujours GMT.

0

Vous devez définir manuellement les paramètres régionaux pour la NSDateFormatter, afin que tous les utilisateurs voient la même chaîne formatée. Sinon, le formateur utilisera les paramètres régionaux définis pour le périphérique.

0

En fait, cela fonctionne correctement. Les deux dates sont équivalentes, juste que l'une se trouve dans le fuseau horaire US/Mountain et l'autre dans le fuseau horaire de Greenwich. (17h30 + 7 heures = 12h30)

Quel est le problème ici?

0

Dans iOS2.x et 3.x dans la description/datefromstring fonction retourne: 2010-09-24 17:30:00 - 0700

dans iOS 4.x il retourne: ce 2010-09- 25 00:30:00 GMT

Vous pourriez soumettre un bug à apple.