UTCの時刻を任意のタイムゾーンに変換する

ActiveSupport::TimeWithZone を使うのが便利。active_support/time を require する。

2.1.1 :001 > require 'active_support/time'
 => true 

UCT 時刻を America/Chicago 時刻に変換してみる。

2.1.1 :002 > t = Time.now.utc
 => 2014-11-16 11:14:17 UTC 
2.1.1 :003 > tc = t.in_time_zone('America/Chicago')
 => Sun, 16 Nov 2014 05:14:17 CST -06:00 

tc のクラスは Time ではなくて、ActiveSupport::TimeWithZone。

2.1.1 :004 > tc.class
 => ActiveSupport::TimeWithZone

Time と比較もできる。

2.1.1 :005 > t == tc
 => true

TimeZone が違うと時刻表示は当然違うけど、UTC に直すと同じ時刻なので true になる。