6

在 Rails 3 中,有没有办法使用 datetime_select 并显示小时显示 12 小时上午/下午选项而不是 24 小时选项?

4

3 回答 3

8

如果有人偶然发现这个问题,rails 3.2 的答案是:

<%= f.datetime_select :attribute_name,  
                       ampm: true %>  
于 2013-03-01T22:26:27.933 回答
2

这是我添加到助手类的方法:

def am_pm_hour_select(field_name)
select_tag(field_name,options_for_select([
  ["1 AM", "01"],["2 AM", "02"],["3 AM", "03"],["4 AM", "04"],["5 AM", "05"],["6 AM", "06"],
  ["7 AM", "07"],["8 AM", "08"],["9 AM", "09"],["10 AM", "10"],["11 AM", "11"],["12 PM", "12"],
  ["1 PM", "13"],["2 PM", "14"],["3 PM", "15"],["4 PM", "16"],["5 PM", "17"],["6 PM", "18"],
  ["7 PM", "19"],["8 PM", "20"],["9 PM", "21"],["10 PM", "22"],["11 PM", "23"],["12 AM", "0"]]))
end

然后我将该方法插入到我的视图中:

<%= am_pm_hour_select "eventtime[start(4i)]" %>  

它似乎起到了作用,但如果有更惯用的方式来做到这一点,我很想听听。

(更新:修复了修昔底德发现的错误)

于 2010-07-13T02:53:41.910 回答
2

下面的代码错误地处理了午夜和中午:它调用中午 '12 AM',即午夜;它称午夜为“中午 12 点”,即中午。

此外,代码应使用国际标准的 0:00 作为午夜。

固定的:

def am_pm_hour_select(field_name)
select_tag(field_name,options_for_select([
    ["1 AM", "01"],["2 AM", "02"],["3 AM", "03"],["4 AM", "04"],["5 AM", "05"],["6 AM", "06"],
    ["7 AM", "07"],["8 AM", "08"],["9 AM", "09"],["10 AM", "10"],["11 AM", "11"],["Noon", "12"],
    ["1 PM", "13"],["2 PM", "14"],["3 PM", "15"],["4 PM", "16"],["5 PM", "17"],["6 PM", "18"],
    ["7 PM", "19"],["8 PM", "20"],["9 PM", "21"],["10 PM", "22"],["11 PM", "23"],["Midnight", "0"]]))
end
于 2011-06-08T03:20:46.660 回答