NSTimeZone: quelle est la différence entre localTimeZone et systemTimeZone?
Sous NSTimeZone classe, il est à la fois +localTimeZone et +systemTimeZone. J'ai fait un test sur le simulateur d'iphone, fois de retour NSTimeZone objet portant le même fuseau horaire. Quelle est la différence? Qui je doit utiliser pour rechercher le fuseau horaire de l'iPhone? Grâce
Mon test:
NSLog(@"Local Time Zone %@",[[NSTimeZone localTimeZone] name]);
NSLog(@"System Time Zone %@",[[NSTimeZone systemTimeZone] name]);
- Il y a également un bon, en profondeur réponse ici: iPhone - les Différences entre les temps de la zone des méthodes pratiques
Vous devez vous connecter pour publier un commentaire.
L'utilisateur (ou de votre application ou d'une autre application) peut modifier le fuseau horaire par défaut pour une application (à l'aide de
+[NSTimeZone setDefaultTimeZone]
) ou le fuseau horaire du système (à l'aide du Système de Préférences) à tout moment.+[NSTimeZone localTimeZone]
retourne un proxy qui va toujours agir comme si elle est la actuel fuseau horaire par défaut pour l'application, même si ce défaut changements. Vous pouvez modifier le fuseau horaire par défaut pour une application pour qu'elle se comporte comme si elle était dans un fuseau horaire différent.+[NSTimeZone systemTimeZone]
renvoie la actuel fuseau horaire du système (tel que défini dans les Préférences Système). Dans la plupart des cas, ce seront les mêmes (l'application du fuseau horaire par défaut est réglé sur le fuseau horaire du système à l'application de démarrage, je crois).Si vous voulez savoir le système de réglage du fuseau horaire, vous voudrez probablement utiliser
+[NSTimeZone systemTimeZone]
. Si vous voulez juste le fuseau horaire correct pour votre application, vous voulez probablement+[NSTimeZone localTimeZone]
.Les docs sont une mine d'informations utiles pour ce genre de chose. Dans ce cas, ils disent:
localTimeZone
est le fuseau horaire par défaut pour l'application en cours. Il peut être défini par l'utilisateur ou par programmation de l'application (ou éventuellement dans d'autres façons). C'est en fait un pointeur versdefaultTimeZone
avec un niveau d'indirection; si la valeur par défaut de temps de changement de zone,localTimeZone
sera changer.systemTimeZone
, d'autre part, est le fuseau horaire utilisé par le système de base. Une valeur mise en cache pour cette ne changer si le système de changement de fuseau horaire lors de l'exécution de l'application, à la différence delocalTimeZone
.