2

私が理解していることから、

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

デバイスのローカルタイムゾーンを提供します。それが私に与えているのは「US/Central」であり、 [NSTimeZone abbreviationDictionary]の略語のリスト、または[ NSTimeZoneknownTimeZoneNames ]のタイムゾーン名のリストのどこにもそれを見つけることができません。これはどこから来たの?現在のデバイスのタイムゾーンをRailsアプリに渡す必要があります。これは、「オーストラリア/シドニー」「アメリカ/シカゴ」などを理解しますが、 「米国/中央」は理解しません。

localTimeZoneから提供されたものを取得して、Railsが理解できる文字列に変換するにはどうすればよいですか(つまり、システムが認識しているすべてのタイムゾーン名であるknownTimeZoneNamesの任意のタイムゾーンですか?)

4

2 に答える 2

5

宝石ActiveSupport::TimeWithZoneを必要とせずに使用している可能性があります。tzinfo

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

を必要としない場合はtzinfo、かなり役に立たないタイムゾーンのサブセットしか取得できません。

編集:混乱を避けるために、私がプライベートTime#get_zoneAPIを使用した理由は、それを呼び出すときに舞台裏で使用されているためですTime#zone=。が必要ない場合はtzinfo、を呼び出すとTime.send(:get_zone, "US/Central")が返さnil

于 2009-11-17T10:30:00.957 に答える
0

シミュレーター内からそれを取得していますか?もしそうなら、このコマンドを端末から実行すると、このコマンドは何を返しますか?
$ systemsetup -gettimezone

Mac OS 10.5のタイムゾーン設定GUIは、タイムゾーンをUS/*に設定します。コンソールから手動で設定する場合は、予想されるタイムゾーンの1つに設定できます。

これを実行して有効なリストを取得し、US/Centralがその中に含まれていないことに注意してください。
$ systemsetup -listtimezones

これを実行して、America / Chicago
$ systemsetup -settimezone America/Chicagoに設定します。

于 2009-11-15T15:38:22.627 に答える