Question

D'après ce que je comprends, appelant

NSLog(@"Local Time Zone %@",[[NSTimeZone localTimeZone] name]);

vous donne la zone heure locale du dispositif. Ce qu'il me donne est « US / Central » , et je ne trouve pas que partout dans la liste des abréviations [NSTimeZone abbreviationDictionary] , ou la liste de fuseau horaire noms [NSTimeZone knownTimeZoneNames] . Où est celui-ci vient? Je dois passer le fuseau horaire actuel de l'appareil à une application Rails, et il comprend des choses comme "Australie / Sydney" ou "Amérique / Chicago" , mais pas "US / Central" .

Comment puis-je prendre ce que LocalTimeZone me donne et le convertir en une chaîne Rails peut comprendre (par exemple une zone de temps dans knownTimeZoneNames, qui doit être tous les noms de fuseau horaire supposé que le système connaît A propos?)

Était-ce utile?

La solution

Vous êtes probablement en utilisant ActiveSupport::TimeWithZone sans avoir besoin de la gemme tzinfo:

$ irb -rrubygems -ractivesupport -rtzinfo
>> Time.send(:get_zone, "US/Central").now
=> Tue, 17 Nov 2009 04:27:23 CST -06:00

Si vous ne souhaitez pas tzinfo, vous obtiendrez seulement un sous-ensemble des fuseaux horaires qui est assez inutile.

EDIT : Juste pour éviter toute confusion, la raison pour laquelle je l'API Time#get_zone privé est parce que ce ce qui est utilisé dans les coulisses lorsque vous appelez Time#zone=. Si vous ne souhaitez pas tzinfo, appelant Time.send(:get_zone, "US/Central") retourne nil.

Autres conseils

Êtes-vous obtenir ce à partir du simulateur? Si oui ce que fait cette commande retourne pour si vous l'exécutez à partir d'un terminal?
$ Systemsetup -gettimezone

L'interface de réglage du fuseau horaire dans Mac OS 10.5 fixerait à US timezones / *. Si vous ne définissez manuellement à partir de la console, vous pouvez le mettre à l'un des fuseaux horaires prévus.

Exécuter ce pour obtenir une liste des valides, et notez que US / Central est pas parmi eux.
$ Systemsetup -listtimezones

Exécuter ce pour le mettre à
Amérique / Chicago $ Systemsetup -settimezone Amérique / Chicago

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top