web-dev-qa-db-ja.com

Rails 3.1?

Rails 3.1を実行している基本的なアプリでレコードが作成された日付を呼び出しています。

<%= @issue.created_at %>

上記は次のタイムスタンプを出力します:

2011-09-10 14:44:24 UTC

この表示方法を変更する最も簡単な方法は何ですか?私はこのようなものが欲しい:

10 Sept. 2011

そして、どういうわけかそれを別の形式でもう一度呼び出します:

14:44

だから私はそれを2回呼び出し、2つを一緒にマージすることができます:

10 Sept. 2011
14:44

2行の日付/時刻をフォーマットするヘルパーを作成するのではなく、2回呼び出したい理由は、一部の場所では日付を、他の場所では時刻のみを呼び出すことができるようにするためです。

26
dannymcc

I18nを使用します。いくつかの例を見てみましょう http://guides.rubyonrails.org/i18n.html#adding-date-time-formats 。これは、日付と時刻をフォーマットするクリーンで柔軟な方法です。

13
lucapette

最も簡単なことはstrftime関数を使うことです

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

あなたが自分でそれをたくさんしているのに気づいたら、これらの2つの呼び出しを別々のヘルパーに入れることができます。

76
spike
<%= l(@issue.created_at, :format=>:your_format) %>

ロケールYAML(app/config/locale/country_id.yml)では、宣言する必要があります

time:
 formats:
  your_format: '%d %b. %Y'
  your_another_format: '%I:%M'

日付のフォーマットは、簡単に設定できるようにi18n YAML定義ファイル内で宣言する必要があります。他の日付のフォーマットも見つかります here

9
Agung Prasetyo

日付/時刻のフォーマット@spikeを簡単にカスタマイズする方法については、 http://www.foragoodstrftime.com/ を確認してください。

7
akeyva

できるよ:

@issue.created_at.to_date.iso8601

1
flyer88

to_sは、フォーマット入力引数も受け取ります。

http://apidock.com/Rails/ActiveSupport/TimeWithZone/to_s

0