在 Rails 3 中,有没有办法使用 datetime_select 并显示小时显示 12 小时上午/下午选项而不是 24 小时选项?
问问题
2300 次
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 回答