Rails:将UTC DateTime转换为另一个时区
在Ruby / Rails中,如何将UTCdate时间转换为另一个时区?
time.in_time_zone(time_zone)
例:
zone = ActiveSupport::TimeZone.new("Central Time (US & Canada)") Time.now.in_time_zone(zone)
要不就
Time.now.in_time_zone("Central Time (US & Canada)")
您可以通过执行以下操作来查找ActiveSupport时区的名称:
ActiveSupport::TimeZone.all.map(&:name) # or for just US ActiveSupport::TimeZone.us_zones.map(&:name)
如果Time.zone
是你想要的时区,那么你可以使用@date.to_time.to_datetime
> @date => Tue, 02 Sep 2014 23:59:59 +0000 > @date.class => DateTime > @date.to_time => 2014-09-02 12:59:59 -1100 > @date.to_time.to_datetime => Tue, 02 Sep 2014 12:59:59 -1100
尝试使用TimeZone处理ActiveSupport的TimeWithZone对象。 ActiveSupport还提供了将UTC时间转换为指定的时区时区的in_time_zone方法。 mckeed的答案显示了代码。
以防万一,如果你在Rails中处理ActiveRecord对象。
将Time.use_zone
用于覆盖在config.time_zone
设置的默认时区的每个请求基准时区可能是一个好主意
我在Rails 4中使用simple_form,我只是添加了input字段
<%= f.input :time_zone, :as => :time_zone %>
与迁移
class AddTimeZoneColumnToTextmessage < ActiveRecord::Migration def change add_column :textmessages, :time_zone, :string end end