ruby on rails - Time.now.zone与activessupport::TimeZone的比较



我在注册期间收集用户的时区,并使用以下形式(相关部分)存储在数据库中。

<%= a.input :time_zone, collection: ActiveSupport::TimeZone.us_zones.map { |zone| [zone.name, zone.name] }, required: true, label: "Select your time zone" %>

但是,我希望将选择默认为用户的本地时区(基于操作系统),以加快注册过程。我试着用

<%= a.input :time_zone, collection: ActiveSupport::TimeZone.us_zones.map { |zone| [zone.name, zone.name] }, selected: Time.now.zone, required: true, label: "Select your time zone" %>

但它不起作用,因为Time.now.zone是"东部夏令时",而时区名称是"东部时间(US &加拿大)"。是否有办法将Time.now.zone转换为区域名称。

我有办法了

假设您想将时区America/New_York设置为Time.now(此处Time.now.zone为BDT)

time = Time.now
offset = ActiveSupport::TimeZone.new('America/New_York').utc_offset()
time = time.in_time_zone("America/New_York")
time += -offset

谢谢j-mcnally

相关内容

  • 没有找到相关文章

最新更新