8

我关注了 Ryan Bate 的 railscast #106 http://railscasts.com/episodes/106-time-zones-revised,它为 User 模型添加了一个 time_zone 字符串。该字符串来自下拉列表:

= f.time_zone_select :time_zone, ActiveSupport::TimeZone.us_zones

我正在尝试查询共享公共时区偏移量的所有用户(这样我就可以在每天的特定时间向他们发送电子邮件)。

User.where(:time_zone => ['Guadalajara','Central America','Mexico City', 'Monterrey', 'Saskatchewan'])

我无法获得特定偏移量的时区名称列表。我一直在修补 TzInfo 和 ActiveSupport::TimeZone.zones_map,但成功有限。我觉得 zone_map 应该能够满足我的需求,但是我无法从中获取我想要的数据(尽管我在那里看到了它!)。

我在这里采取了错误的方法吗?我在想我可以将 GMT 偏移量存储在用户身上,然后以这种方式查询?

我的 google-fu 让我失望了。

4

1 回答 1

16

我想通了——

tz_names = ActiveSupport::TimeZone.zones_map.values.collect{|z| z.name if z.utc_offset == offset}.compact
于 2013-04-09T21:49:44.133 回答