2010-12-06 23 views
11

Est-il possible en cacao touch d'obtenir le fuseau horaire local de l'appareil en fonction des coordonnées du GPS? J'ai vu cette demande l'année dernière, mais pas de réponse ...Comment obtenez-vous le fuseau horaire local basé sur les coordonnées de localisation de base?

Tout ce que je veux vraiment est le nombre d'heures de différence GMT, et je ne veux pas interroger un service Web.

Ou, puis-je demander à l'appareil ce fuseau horaire est réglé sur?

Peut-il être fait?

+0

Si vous êtes déterminé à déterminer le fuseau horaire en fonction de la latitude et la longitude * indépendante du système *, s'il vous plaît lire ma réponse ici: [? Calculez le temps par la latitude/longitude] (http://stackoverflow.com/questions/0/chiffre-out-temps par latitude-longitude/11085220 # 11085220) – mpemburn

+0

Voir aussi: [? Comment obtenir un fuseau horaire à partir d'un emplacement en utilisant les coordonnées latitude et longitude] (http://stackoverflow.com/a/16086964/634824) –

Répondre

23

Utilisez [NSTimeZone localTimeZone];

Edit: L'objet retourné a une méthode -(NSInteger)secondsFromGMT vous pouvez utiliser pour déterminer la différence de GMT.

+1

Cela semble obtenir sa valeur de 'defaultTimeZone' pour l'application, et si elle n'est pas explicitement définie, alors à partir de' systemTimeZone'. Est-il possible d'obtenir le fuseau horaire à partir de la latitude et de la longitude? – Steve

+0

Non intégré dans le système. Vous devrez construire vous-même quelque chose, peut-être utiliser les fichiers de données sur http://www.date-time-zone.com/ et comparer les coordonnées de l'utilisateur avec les définitions de fuseaux horaires qui y sont contenues. –

+0

Merci, @jenningj. Après avoir regardé cela un peu plus, je réalise à quel point c'est difficile à faire. On dirait qu'il existe des services Web pour faire cela, mais je vois pourquoi la plupart des applications vous demandent juste de leur dire le fuseau horaire, ou l'obtenir à partir d'une liste de la ville. – Steve

2

Il n'est pas réellement possible, à moins que la date est effectivement inclus dans l'entrée. Pourquoi? Parce que le décalage change avec le temps. Le plus souvent, il y a le passage à l'heure d'été en Amérique du Nord et l'heure d'été en Europe. Divers endroits font l'interrupteur à différents moments. En outre, les formules utilisées pour déterminer quand faire le changement changent au fil du temps. Il y a quelques années aux États-Unis, par exemple, l'heure d'été a été prolongée. Ensuite, vous avez des endroits comme le Guatemala qui essaient parfois l'heure d'été, puis décident l'année prochaine de ne pas le faire.

En bout de ligne, il n'y a pas de relation biunivoque entre les coordonnées GPS et le fuseau horaire. Cependant, il existe une relation un à un entre les coordonnées, la date et le fuseau horaire. Mais c'est une cible mouvante.