2010-04-23 15 views

cevap

181
time.in_time_zone(time_zone) 

Örnek:

zone = ActiveSupport::TimeZone.new("Central Time (US & Canada)") 
Time.now.in_time_zone(zone) 

ya da sadece

Time.now.in_time_zone("Central Time (US & Canada)") 

Sen yaparak ActiveSupport zaman dilimleri isimlerini bulabilirsiniz:

ActiveSupport::TimeZone.all.map(&:name) 
# or for just US 
ActiveSupport::TimeZone.us_zones.map(&:name) 
+0

kullanabilirsiniz, ben "tanımsız yöntem 'in_time_zone'" hatası alıyorum. Bunu işe almak için ihtiyacım olan ray sınıfları var mı? –

+0

Rails hangi versiyonunu kullanıyorsunuz? Time.zone.now.in_time_zone (...) yaparsanız çalışır mı? – mckeed

+0

Kod örneği için çok teşekkürler. Bu onu (Fred'in yorumu ile birlikte) temizledi. Çok fazla şey yanlış yapıyordum, ben bile açıklamaya bile başlayamıyorum :-) –

3

ActiveSupport en TimeWithZone nesneleri deneyin dalavereler TimeZone ile ated. ActiveSupport ayrıca bir UTC saatini belirli bir TimeZone saat dilimine dönüştürmek için in_time_zone yöntemini sağlar. mckeed'in cevabı kodu gösterir.

+0

TimeWithZone'u sınıfıma aktarmak için sözdizimi nedir? Yoksa varsayılan olarak Rails ile mi alabilirim? –

+1

Varsayılan olarak alacağınıza inanıyorum. mckeed ihtiyacınız olan kodu var, ama bunu irb içinde görmeyeceksiniz. Rails'de koşmalısın. – Fred

+0

Haklısınız - teşekkürler, Fred - varsayılan olarak Rails ile geliyor. Samanlıkta çalışıyorum, bunu irb'da çalışmayı denedim. –

0

Rails 4'te simple_form kullanıyorum ve sadece göçle

<%= f.input :time_zone, :as => :time_zone %> 

olarak giriş alanını eklendi

class AddTimeZoneColumnToTextmessage < ActiveRecord::Migration 
    def change 
    add_column :textmessages, :time_zone, :string 
    end 
end 
4

de açıklamak config.time_zone

Daha detaylı olarak ayarlanan varsayılan zaman dilimini geçersiz kılan bir istek başına temeli Zaman dilimi için Time.use_zone kullanmak iyi bir fikir olabilir Time.zone eğer o zaman istediğiniz saat dilimi var sen Ben Time.now.in_time_zone ('CST') çalıştığınızda irb olarak @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 
+0

Rails 5 üzerinde çalışıyor ' Time.zone # => Avrupa/Paris my_date # => Çar, 29 Mar 2017 19:00:20 +0200 my_date.to_time # =>" 2017-03-29T17 : 00: 20.000 + 00: 00 " my_date.to_time.to_datetime # => Çar, 29 Mar 2017 17:00:20 +0000 " –

İlgili konular