time_select,在Ruby on Rails上有12小时的时间和时区
我需要从rails 2.3.8应用程序的用户捕获时间和时区,但是无法想到创建和解析选择的干净解决方案。
理想情况下,我会有以下的下拉菜单:
- 小时(1-12)
- 分钟(0-59)
- 上午下午
- 时区
有没有一个gem /插件可以完成我想要的东西? 我是否需要在数据库中存储时间和时区? 什么是最好的存储策略?
我最终需要在UTC中吐出这些值,但用户应该能够返回并在正确的时区内查看时间。
您可以使用适当的方法获取时区选择:
- time_zone_options_for_select
- time_zone_select
同样,日期有date_select 。
存储:
如果时区特定于用户且未更改,则将其时区存储在其用户记录中,并在加载current_user时进行设置。 Rails将转换为UTC的时间并始终将UTC存储在数据库中,并为您自动转换为该默认时区(包括夏令时!)。 最简单的方法。
use_zone(zone)允许您覆盖块的默认区域,因此您可以接受表单值并使用该函数进行设置,并在该块中设置值。
更新:我写了一些Rails时区示例作为博客条目。
我个人使用jQuery只更改显示:
ampm = ["12 AM","01 AM","02 AM","03 AM","04 AM","05 AM","06 AM","07 AM","08 AM","09 AM","10 AM","11 AM","12 PM","01 PM","12 PM","01 PM","02 PM","01 PM","02 PM","03 PM","04 PM","05 PM","06 PM","07 PM","08 PM","09 PM","10 PM","11 PM"] j("#game_start_time_4i option").each(function(index,value){ j(value).html(ampm[index]); });
扶手:
<%= datetime_select('game', 'start_time') %>