从轨道中的时区检索城市名称



我已经设置了默认时区,如下所述

class Application < Rails::Application
 config.time_zone = "Asia/Kolkata"
end

现在,从rails控制台,我可以获得时区为IST,但我想获得这个时区的标识符(Asia/Kolkata)。

这是我得到的:

 > Time.zone.name # work for this
 => "Asia/Kolkata" 
 > Time.now.zone
 => "IST" 
 > Time.now.zone.name # this doesn't work
 => NoMethodError: undefined method `name' for "IST":String

现在我遇到麻烦了:

 > b
 => 2015-03-13 16:38:12 +0530
 > b.zone
 => "IST"
 > b.zone.name
NoMethodError: undefined method `name' for "IST":String

有没有办法从对象b中检索zone.name(这里是Asia/Kolkata)。

注意:我不想只使用这个IST时区。但对于通用时区。这只是一个样本。有什么办法或宝石可以解决我的问题吗??我感谢你的帮助和指导。

更新

如果我在application.rb中定义timezone,那么PrakshMurthy的asnwer是正确的。但我不想要特定的时区。所以我必须在application.rb中实现而不指定。请帮助我。

这就是您要查找的内容(没有在application.rb中指定特定timezone

   > b
   => 2015-03-13 16:38:12 +0530
   > getutc = b.utc_offset
   => 19800
   > tz_names = ActiveSupport::TimeZone.zones_map.values.collect{|z| z.tzinfo.name if z.utc_offset == getutc}.compact!
   => ["Asia/Kolkata", "Asia/Kolkata", "Asia/Kolkata", "Asia/Kolkata", "Asia/Colombo"] 
   > tz_names.first
   => "Asia/Kolkata" 

现在您不必在application.rb中指定默认时区。:)

这应该可以工作:b.in_time_zone.time_zone

b.time_zone.name

因为你的b有点像Time.zone.now,而b.time_zone.name给出了Asia/Kolkata。CCD_ 15也给出了相同的结果。

最新更新