24

我发现自己重复输入许多我定义的 strftime。

看过 Ryan Bates 的 railscasts ep 32/33(我认为)后,我为 to_s 方法创建了一个自定义选项,如 Time.now.to_s,这样我就可以执行 Time.now.to_s(:sw),其中 :sw 是我的自定义方法,例如检索“2010 年 9 月 23 日,下午 5:00”。

但问题是,我不知道将#sw 的定义放在哪里。它应该在初始化文件夹中的文件中吗?还是应该放在 application.rb 中?

谢谢!

4

4 回答 4

45

在您的语言环境文件中使用“时间”而不是“日期”,因为 Rails 时间戳是日期时间。

config/locales/en.yml

en:
  time:
    formats:
      default: "%Y/%m/%d"
      short: "%b %d"
      long: "%B %d, %Y"

app/views/posts/show.html.haml

  = l post.updated_at
  = l post.created_at, :format => :long
于 2010-12-14T07:53:46.390 回答
22

我有一个文件config/initialisers/time_formats.rb包含:

...
Time::DATE_FORMATS[:posts] = "%B %d, %Y"
Time::DATE_FORMATS[:published] = "%B %Y"
...

您只需要重新启动服务器即可获取更改。

于 2010-09-07T00:21:56.803 回答
5

使用 Rails I18n API。

# config/locales/en.yml
en:
  date:
    formats:
      default: "%Y-%m-%d"
      short: "%b %d"
      long: "%B %d, %Y"

# in views 
= l post.updated_at # will use default format of date in locales yml file

了解I18n API

于 2010-11-18T08:52:18.563 回答
0

请阅读这篇文章:

导轨 - to_formatted_s

创建文件名:config/initializers/time_formats.rb

Time::DATE_FORMATS[:my_custom_time_format] = "%Y-%m-%d %H:%M"

你可以使用:

formated_date = my_date.to_formatted_s(:my_custom_time_format)

注意:您必须重新启动您的 Rails 服务器(WEBRick、FCGI 等)

于 2014-03-29T21:12:46.360 回答