在Rails 3.1中更改created_at的格式?

dan*_*mcc 26 timestamp ruby-on-rails date ruby-on-rails-3.1

我在运行Rails 3.1的基本应用程序中调用创建记录的日期.

<%= @issue.created_at %>
Run Code Online (Sandbox Code Playgroud)

以上输出以下时间戳:

2011-09-10 14:44:24 UTC
Run Code Online (Sandbox Code Playgroud)

改变这种显示方式的最简单方法是什么?我想要这样的东西:

10 Sept. 2011
Run Code Online (Sandbox Code Playgroud)

然后以某种不同的格式再次调用它:

14:44
Run Code Online (Sandbox Code Playgroud)

所以我可以调用它两次并将两者合并在一起:

10 Sept. 2011
14:44
Run Code Online (Sandbox Code Playgroud)

我之所以要调用它两次而不是创建一个帮助器来格式化两行日期/时间的原因是允许我在某些地方调用日期而在其他地方调用日期.

spi*_*ike 76

最简单的方法是使用strftime函数

# Day / Month / Year
@issue.created_at.strftime("%d %b. %Y")
# Hour:Min
@issue.created_at.strftime("%H:%M")
Run Code Online (Sandbox Code Playgroud)

如果你发现自己做了很多事,你可以将这两个电话放在单独的帮助器中.

  • 有些人可能会发现这个解决方案很有用:[strftime docs](http://www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftime) (2认同)

luc*_*tte 13

我会用I18n.看一些示例http://guides.rubyonrails.org/i18n.html#adding-date-time-formats.这是一种清晰灵活的格式化日期和时间的方法.

  • 请使用l()辅助方法 (2认同)

Agu*_*tyo 9

<%= l(@issue.created_at, :format=>:your_format) %>
Run Code Online (Sandbox Code Playgroud)

在语言环境YAML(app/config/locale/country_id.yml)中,您必须声明

time:
 formats:
  your_format: '%d %b. %Y'
  your_another_format: '%I:%M'
Run Code Online (Sandbox Code Playgroud)

日期格式应在i18n YAML定义文件中声明,以便于配置,其他日期格式可在此处找到


小智 7

查看http://www.foragoodstrftime.com/以获得自定义日期/时间格式@spike的简便方法