2) utc_to_local
использует дату для определения правильного смещения, поэтому выходные данные всегда будут одинаковыми для данной даты.
Вы можете проверить это следующим образом:
t = Time.utc(2011,3, 14, 12)
# => 2011-03-14 12:00:00 UTC
t2 = Time.utc(2011,3, 11, 12)
# => 2011-03-11 12:00:00 UTC
ActiveSupport::TimeZone.find_tzinfo("America/New_York").utc_to_local(t)
# => 2011-03-14 08:00:00 UTC
ActiveSupport::TimeZone.find_tzinfo("America/New_York").utc_to_local(t2)
# => 2011-03-14 07:00:00 UTC
1) Мне это тоже не кажется правильным. Я предполагаю, что они интересуются только фактическим значением часа, минут и т. Д. И игнорируют часовой пояс.
В любом случае вам лучше использовать:
e.registration_start_utc.in_time_zone("Eastern Time (US & Canada)")
См. Также этот вопрос Я только что спросил ...