我需要从 rails 2.3.8 应用程序的用户那里捕获时间和时区,但一直无法想出一个干净的解决方案来创建和解析选择。
理想情况下,我会有以下下拉菜单:
- 小时 (1-12)
- 分钟 (0-59)
- 上午下午
- 时区
是否有一个 gem/plugin 可以完成我正在寻找的东西?我需要将时间和时区都存储在数据库中吗?存储的最佳策略是什么?
我最终需要以 UTC 格式输出这些值,但用户应该能够返回并查看正确时区的时间。
我需要从 rails 2.3.8 应用程序的用户那里捕获时间和时区,但一直无法想出一个干净的解决方案来创建和解析选择。
理想情况下,我会有以下下拉菜单:
是否有一个 gem/plugin 可以完成我正在寻找的东西?我需要将时间和时区都存储在数据库中吗?存储的最佳策略是什么?
我最终需要以 UTC 格式输出这些值,但用户应该能够返回并查看正确时区的时间。
您可以使用适当的方法获取时区选择:
同样,日期也有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') %>