更改导轨时间格式

时间:2013-07-29 18:56:18

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

我有时会在我的观点中展示

<td><%= something.foo_time %></td>
<td><%= something.bar_time %></td>

现在它们显示为

2000-01-01 05:24:00 UTC
2000-01-01 15:24:00 UTC

但由于我没有收集日期,我想只显示时间,但是没有年份和时区的AM / PM风格。

我尝试过使用strf格式http://www.ruby-doc.org/core-2.0/Time.html#method-i-strftime,但它不起作用

<td><%= something.foo_time("%I:%M%p") %></td>

我也试过

<td><%= something.foo_time "%H:%M:" %></td>

它也不起作用。

我怎样才能从

开始
2000-01-01 15:24:00 UTC

3:24 PM

2 个答案:

答案 0 :(得分:1)

你总是可以创建一个帮手

module ApplicationHelper
   def display_date(input_date)
    if !input_date
      return ''
    end

    return input_date.strftime("%d/%m/%Y")
  end

end

然后在您的视图中调用<%= display_date time_var %>
我的示例没有将日期格式化为AM / PM样式,但您可以在文档上轻松找到如何执行此操作,例如您发布的链接:t.strftime("at %I:%M%p") #=> "at 08:37AM"

根据链接

,我的方法可以更改为return input_date.strftime("%I:%M%p")

答案 1 :(得分:1)

最简单的方法是:

something.foo_time.strftime("%I:%M%p")

但是,我会在以下URL中查看Rails的DATE_FORMATS,如果存在则使用默认值,或者通过初始化程序添加它来创建自己的。

http://api.rubyonrails.org/classes/Time.html

然后你可以这样做:

something.foo_time.to_s(:time)