「America/Los_Angeles」から「Pacific Time(US &カナダ)」に変換する方法については、すでに質問があります。しかし、私は "US/Pacific"と他の時代遅れのタイムゾーンをRails TimeZoneに変換したい。私はこれを達成するのに役立つ図書館で何かを見つけることができません。古いTZInfo識別子からRails TimeZoneの名前を取得するにはどうすればよいですか?
答えて
:アクティブサポートにバンドルtzinfoのバージョンのが唯一のタイムゾーンで定義されたゾーンをサポートするために必要な定義が含まれ
クラス。 TimeZoneで定義されていないゾーンを使用する必要がある場合は、TZInfo gemをインストールする必要があります(最新バージョンのgemがローカルにインストールされている場合は、バンドルされたバージョンの代わりに使用されます)。
個人的には、Railsのタイムゾーンは馬鹿だと思います。それらは、Railsが「146ゾーンの意味のあるサブセット」と表現するものに任意に制限されています。しかし、どのゾーンが「意味のある」ゾーンであり、どのゾーンが破棄されるのかを説明する方法は何もありません。
"US/Pacific"などの識別子は、TZDBデータの "リンク"または "エイリアス"として知られています。おそらくそれらがRailsから省略されるかもしれないが、実際には欠けている他の多くの現実世界のタイムゾーンがあることがわかりました。
現実世界で私が見たことのある唯一の場所は、Twitter APIです。一方、IANA/TZDB識別子は遍在しています。
最高のアドバイスは、Railsのタイムゾーンを忘れて、Ruby TZInfo Gemを直接使用することです。エイリアスを含むすべてのゾーンで完全なTZDBを実装しています。
Railsゾーンを引き続き使用する必要がある場合は、まずTZInfoを使用して実際のゾーンへのエイリアスを解決し、そのゾーンがRails MAPPING
辞書にあるかどうかを確認できます。たとえば:あなたはそこからlink_to_identifier
属性を使用することができますので、私はあなたが「米国/太平洋」をロードする際に信じて
"US/Pacific" => "America/Los_Angeles" (via TZInfo)
"America/Los_Angeles" => "Pacific Time (US & Canada)" (via Rails MAPPING)
tzinfoのを経由して、それは、LinkedTimezoneInfo
オブジェクトとしてサブクラス化されます。
このコマンドでは、144個のタイムゾーン名が表示されます。
activesupportの:: TimeZone.zones_map RailsのActiveSupport::TimeZone docsから
"US/Pacific" " – user842563
- 1. Windowsでディスクの識別子を取得するにはどうすればよいですか?
- 2. Delphiで別のTimeZoneで現在時刻を取得するにはどうすればよいですか?
- 3. 一意のスレッド識別子を取得するにはどうすればよいですか?
- 4. どうすればApiから取得したtimeZoneの名前とtimeZoneの名前をCでシステムで見つけることができますか
- 5. プロビジョニングプロファイルからコード署名IDの名前を取得するにはどうすればよいですか?
- 6. blackberry - デバイスのユニークな識別子を取得するにはどうすればいいですか?
- 7. 子クラスの名前を取得するにはどうすればよいですか?
- 8. Messenger 1.4 APIのボットユーザーの名前、タイムゾーン、性別を取得するにはどうすればよいですか?
- 9. 名前からリソース識別子を取得
- 10. Arrayストアビットから最初のarray1bitsの名前を取得するにはどうすればよいですか?
- 11. Androidローカルデバイスからのテキストタイプファイルの名前とパスを取得するにはどうすればよいですか?
- 12. Gmailから送信者の名前を取得するにはどうすればよいですか?
- 13. sitecustomize.pyからスクリプトの名前/ファイルを取得するにはどうすればよいですか?
- 14. divから名前をjQueryで取得するにはどうすればよいですか?
- 15. モデルリストからすべての値の名前を取得するにはどうすればいいですか?
- 16. Android:名前から文字列を取得するにはどうすればよいですか?
- 17. データセット(キー値ペア)から名前と値を取得するにはどうすればよいですか?
- 18. preg_matchから名前付きキャプチャだけを取得するにはどうすればよいですか?
- 19. 名前からセレクタを取得するにはどうすればよいですか?
- 20. jenkinsfileの内部からパイプラインの名前を取得するにはどうすればいいですか
- 21. ReactiveCocoaシグナルから「古い値」を取得するにはどうすればよいですか?
- 22. インストールされている.msiファイルの名前を取得するにはどうすればよいですか?
- 23. DNSドメイン名から短い「ドメイン名」を取得するにはどうすればよいですか?
- 24. 列に記載されている名前のOutlookの連絡先から電子メールアドレスを取得するにはどうすればよいですか?
- 25. TinyXMLでタグの名前を取得するにはどうすればよいですか?たとえば、
- 26. 低レベルのAPIでTimeZoneを取得するにはどうすればよいですか?
- 27. 別の名前で同じ拡張子のファイルをコピーするにはどうすればいいですか?
- 28. 名前の描画可能識別子を取得する
- 29. ClangでTemplateTypeParmTypeの名前を取得するにはどうすればよいですか?
- 30. Antのディレクトリ名からファイル名を取得するにはどうすればよいですか?
" '' TZInfo :: Timezone.get( 'US/Pacific')。link_to_identifier''''NoMethodErrorはありません。 – ajbraus
@ajbraus - 'America/Vancouver'はリンクではなく別のゾーンです。したがって、 'link_to_identifier'属性を持たないでしょう。しかし、悲しいかな、それはRailsの "意味のある"ゾーンのリストにあるゾーンではありません。したがって、TZInfo gemを排他的に使用し、それらをRailsゾーンにマッピングしないようにすることを除いて、ここではできることはあまりありません。 –
@ajbraus - 「US/Pacific」を表示するためにあなたのコメントを更新しました。本当にリンクです。 –