私はこのような何かの解析よ:Rubyに時間帯を解析してもらうにはどうすればいいですか?
11/23/10 23:29:57
それに関連するタイムゾーンを持っていませんが、私は(私はありませんしながら)それはUTCタイムゾーンに知っています。 RubyにUTCのタイムゾーンと同じように解析させるにはどうしたらいいですか?
私はこのような何かの解析よ:Rubyに時間帯を解析してもらうにはどうすればいいですか?
11/23/10 23:29:57
それに関連するタイムゾーンを持っていませんが、私は(私はありませんしながら)それはUTCタイムゾーンに知っています。 RubyにUTCのタイムゾーンと同じように解析させるにはどうしたらいいですか?
あなたはそれを解析する前に文字列にUTCタイムゾーン名を追加できます。
require 'time'
s = "11/23/10 23:29:57"
Time.parse(s) # => Tue Nov 23 23:29:57 -0800 2010
s += " UTC"
Time.parse(s) # => Tue Nov 23 23:29:57 UTC 2010
をあなたがレールを使用している場合は、タイムゾーンを持つように設計されてActiveSupport::TimeZone
ヘルパー
current_timezone = Time.zone
Time.zone = "UTC"
Time.zone.parse("Tue Nov 23 23:29:57 2010") # => Tue, 23 Nov 2010 23:29:57 UTC +00:00
Time.zone = current_timezone
を使用することができますユーザーのタイムゾーンに基づいて要求の先頭に設定します。
Time.zone
がすべて必要なので、Time.parse
はまだサーバーのタイムゾーンとして解析されます。
http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html
注:上記の持っている時間のフォーマットはもはや働いていたので、私がサポートされている形式に変更。
Time.zone全体のコンテキストを変更したくない場合は、ActiveSupport :: TimeZone.new( 'UTC')を使用してください。parse – Jerph
@Jerph、あなたの答えは間違いなく最高です –
私はここで同様の質問に答えました。http: //stackoverflow.com/a/36144567/629356 – ifightcrime
Time.zoneセット/解除
Time.zone.parse("Tue Nov 23 23:29:57 2010") + Time.zone.utc_offset
はDSTを無視するのでお勧めできません – Kuf
いやはやなし@Pete Brummの答えにaliter!私は実際にそれを試み、その結果を誤解しました。私の悪い。ありがとう。 – farhadf
私の場合は動作しません。 's =" Fri Dec 3 17:05:41 2010 UTC "'はローカル時間として解析され、 'UTC'を無視します – Oktav
これはおそらく最良の一般的な解決策ではありません – Ramfjord