time_select在Ruby on Rails中有12小时的时间和时区

jes*_*rry 5 user-interface timezone ruby-on-rails time-select

我需要从rails 2.3.8应用程序的用户捕获时间和时区,但是无法想到创建和解析选择的干净解决方案.

理想情况下,我会有以下的下拉菜单:

  • 小时(1-12)
  • 分钟(0-59)
  • 上午下午
  • 时区

有没有一个gem /插件可以完成我想要的东西?我是否需要在数据库中存储时间和时区?什么是最好的存储策略?

我最终需要在UTC中吐出这些值,但用户应该能够返回并在正确的时区内查看时间.

wes*_*son 11

您可以使用适当的方法获取时区选择:

同样,日期有date_select.

存储:

如果时区特定于用户且未更改,则将其时区存储在其用户记录中,并在加载current_user时进行设置.Rails会将时间转换为UTC或从UTC转换,并始终将UTC存储在数据库中,并为您自动转换为该默认时区(包括夏令时!).最简单的方法.

use_zone(zone)允许您覆盖块的默认区域,因此您可以接受表单值并使用该函数进行设置,并在该块中设置值.

更新:我写了一些Rails时区示例作为博客条目.