我希望Time和to_time能够反思。
更新
这就是答案,如果你添加参数:local,它不会忽略偏移量。我发现它默认忽略了数据(偏移量),但是......
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
我对JSON消息有这个问题。无论如何,我不希望to_time真正改变时间。可以转换为UTC,但它应该相应地调整时间。有人知道这是一个已知问题还是“按设计”?
答案 0 :(得分:1)
在ActiveSupport中定义的此方法String#to_time采用一个参数form,可以是:utc(默认值)或:local。因此,默认情况下,它始终返回UTC时间。
获得时区时间:
Time.zone.parse("2012-03-20T12:50:36+01:00")