iPhone NSTimeZone: localTimeZone Verwirrung
-
20-09-2019 - |
Frage
Von dem, was ich verstehe, rief
NSLog(@"Local Time Zone %@",[[NSTimeZone localTimeZone] name]);
gibt Ihnen die lokale Zeitzone des Geräts. Was es mir geben, ist "US / Central" , und ich kann nicht, dass überall in der Liste der Abkürzungen in [NSTimeZone abbreviationDictionary] finden , oder die Liste der Zeitzone Namen in [NSTimeZone knownTimeZoneNames] . Wo kommt dieses aus? Ich brauche die aktuelle Gerätezeitzone zu einer Rails-Anwendung zu übergeben, und es versteht, Dinge wie "Australien / Sydney" oder "Amerika / Chicago" , aber nicht "US / Central" .
Wie mache ich was localTimeZone mir gibt und wandelt es in eine Zeichenfolge, die Rails verstehen kann (dh jede Zeitzone in knownTimeZoneNames, das ist soll alle Zeitzonennamen sein, dass das System weiß, etwa?)
Lösung
Sie sind wahrscheinlich ActiveSupport::TimeWithZone
verwenden, ohne die tzinfo
gem erforderlich zu haben:
$ irb -rrubygems -ractivesupport -rtzinfo
>> Time.send(:get_zone, "US/Central").now
=> Tue, 17 Nov 2009 04:27:23 CST -06:00
Wenn Sie nicht tzinfo
benötigen, werden Sie nur eine Teilmenge von Zeitzonen erhalten, die ziemlich nutzlos ist.
EDIT : Nur um Verwirrung zu vermeiden, der Grund, warum ich den privaten Time#get_zone
API verwendet wird, weil das, was hinter den Kulissen verwendet werden wird, wenn Sie Time#zone=
nennen. Wenn Sie nicht tzinfo
benötigen, Time.send(:get_zone, "US/Central")
kehrt nil
aufrufen.
Andere Tipps
Sind Sie immer, dass aus dem Simulator?
Wenn ja, was macht diesen Befehl gibt für, wenn Sie es von einem Terminal?
laufen
$ System -gettimezone
Die GUI-Zeitzone-Einstellung in Mac OS 10.5 würden Zeitzonen US / * eingestellt. Wenn Sie es manuell von der Konsole legen Sie es auf einem der erwarteten Zeitzonen eingestellt werden.
Ausführen dieses eine Liste der gültigen zu bekommen, und bemerkt, dass US / Central ist nicht unter ihnen.
$ System -listtimezones
Ausführen dieser es nach Amerika / Chicago Reise einstellen $ System -settimezone America / Chicago