0

このタイムゾーン文字列を適切な形式に解析して、使用できるようにするにはどうすればよいですかTime.zone = <the proper time zone string>"。現在、既知の形式タイプは次Eastern Time (US & Canada)のとおりです。"(GMT-05:00) 東部時間 (米国およびカナダ)" のようなさらに正確な形式を受け入れたくない理由は不明です。

Rails には、私が持っている文字列を処理し、適切な Time.zone 形式に変更するための組み込みツールはありますか? このソリューションは、Rail のすべてのタイム ゾーン リストに正しくマッピングされるはずです...

4

1 に答える 1

0

ゾーン文字列をどこで取得しているかわかりませんが、これを確認してくださいTimeZone.to_s

# Returns a textual representation of this time zone.
def to_s
  "(GMT#{formatted_offset}) #{name}"
end

# Returns the offset of this time zone as a formatted string, of the
# format "+HH:MM".
def formatted_offset(colon=true, alternate_utc_string = nil)
  utc_offset == 0 && alternate_utc_string || self.class.seconds_to_utc_offset(utc_offset, colon)
end

あなたに必要なのはTime.zone.name # => "Eastern Time (US & Canada)"

それがない場合は、文字列を正規表現で解析します

'(GMT-05:00) Eastern Time (US & Canada)'.match(/\(.*\) (.*)/)[1]
#=> "Eastern Time (US & Canada)"

https://github.com/rails/rails/blob/5fe88b11f11bb3b30bc23c57b36be4f027d915ba/activesupport/lib/active_support/values/time_zone.rb#L337

于 2013-01-21T22:01:40.460 に答える