6 ответов:
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
попробовать ActiveSupport это TimeWithZone объекты, управляемые с часовым поясом. ActiveSupport также предоставляет метод in_time_zone для преобразования времени UTC в указанный часовой пояс. ответ маккида показывает код.
на всякий случай, если вы имеете дело с объектом ActiveRecord в Rails.
Это может быть хорошей идеей, чтобы использовать
Time.use_zoneдля часового пояса на основе запроса, который переопределяет часовой пояс по умолчанию, установленный вconfig.time_zoneболее подробно я объясняю в https://stackoverflow.com/a/25055692/542995
в простой Рубин, только с
require 'date'используйтеnew_offsetспособ:require 'date' d=DateTime.parse('2000-01-01 12:00 +0200') l=d.new_offset('-0700') u=l.new_offset('UTC') puts "#{u.strftime('%a %F %T %Z')} ❖ #{l.strftime('%a %F %T %Z')}"протестировано с ruby 2.3.7, который пришел стандарт на Mac OS X 10.13.
Я использую simple_form в Rails 4, и я просто добавил поле ввода как
<%= f.input :time_zone, :as => :time_zone %>перенос
class AddTimeZoneColumnToTextmessage < ActiveRecord::Migration def change add_column :textmessages, :time_zone, :string end end
Comments