2012-03-20 9 views
1

私はTimeとto_timeが反映されると思います。ローカル、それがオフセットを無視していません:あなたは、パラメータを追加する場合Rubyの文字列to_timeが壊れていますか?

UPDATE

これは、答えです。私は、JSONメッセージでこの問題を持って

Time.zone.now.to_s.to_time(:local) returns 2012-03-20 14:39:03 +0100 

/UPDATE

> Time.zone.now.to_s 
=> "2012-03-20 12:50:05 +0100" 
> Time.zone.now.to_s.to_time.to_s 
=> "2012-03-20 12:50:05 UTC" 
# PROBLEM: 
# UTC is +0000, meaning that there is 1 hour diff in the above 
> Time.zone.now 
=> Tue, 20 Mar 2012 12:51:32 CET +01:00 
> Time.zone.now.to_time 
=> Tue, 20 Mar 2012 12:51:32 CET +01:00 
> Time.zone.now.to_json 
=> "\"2012-03-20T12:50:36+01:00\"" 
> Time.zone.now.to_json.to_time 
=> 2012-03-20 12:50:36 UTC 

...それはそれはしかし、デフォルトではデータ(オフセット)を無視することを奇妙見つけます。とにかく、実際に時間を変えることは期待していません。 UTCに変換するのはOKですが、それに応じて時間が調整されるはずです。誰もがこれが既知の問題であるか、「設計によって」問題であるかを知っていますか?

答えて

1

ActiveSupportで定義されているこのメソッドString#to_timeは、1つのパラメータformを取ります。このパラメータは、utc(デフォルト)または:localのいずれかです。したがって、デフォルトでは、常にUTCでTimeが返されます。

は、タイムゾーンと時刻を取得するには:

Time.zone.parse("2012-03-20T12:50:36+01:00") 
+0

優れた答えを! 'Time.zone.now.to_s.to_time(:local)'は '2012-03-20 14:39:03 + 0100'を返します。あなたの答えに追加してください。それでも、私はデフォルトの動作が間違っていることがわかります。デフォルトでは、utcは間違って解析し、オフセット全体を追加します。 – oma

関連する問題