【问题标题】:Rails 3: datetime_select with am/pm optionsRails 3:带有 am/pm 选项的 datetime_select
【发布时间】:2010-06-29 19:01:11
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails-3 datetime-select


    【解决方案1】:

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

    <%= f.datetime_select :attribute_name,  
                           ampm: true %>  
    

    【讨论】:

    • 这是正确的,Rails 支持的方式,但输出是一个小时选择,带有标记为 01 AM、02 AM 等的选项,这使得设置时间读作“01 AM:30”从用户 POV 来看真的很不稳定——几乎和 24 小时制一样糟糕。
    • 我很困惑为什么有人会这样编程。没有意义。标准是 3 盒“9 : 15 : PM”
    • @GregBlass,我们应该改用 24 小时制。 ;-)
    【解决方案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)]" %>  
    

    这似乎可以解决问题,但如果有更惯用的方法,我很想听听。

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

    【讨论】:

      【解决方案3】:

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

      此外,代码应使用 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
      

      【讨论】:

        猜你喜欢
        • 2020-04-10
        • 1970-01-01
        • 1970-01-01
        • 2022-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-02
        • 1970-01-01
        相关资源
        最近更新 更多