24

私は自分が定義した多くのstrftimeを繰り返し入力していることに気づいています。

RyanBatesのrailscastsep32/33(私は思う)を見て、Time.now.to_sのようにto_sメソッドのカスタムオプションを作成しました。これにより、Time.now.to_s(:sw)を実行できます。ここで:swは私のカスタムメソッド。たとえば、「2010年9月23日午後5時」を取得します。

しかし、問題は、#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

RailsI18nAPIを使用します。

# 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

I18nAPIについて見る

于 2010-11-18T08:52:18.563 に答える
0

この投稿を読んでください:

Rails-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 に答える