2012-08-06 2 views
24

を表示するには、日付オブジェクトをフォーマットすると、ここで私が表示したいものだ:私はいくつかの回答を検索し、それが主導は、人間が読める形式の日付

2012-05-13 

May 13, 2012 

は、ここで表示されているものです私、それは可能な解決策に言及する「Formatting Dates and Floats in Ruby」、ただしこれは目を変更しない

<p class="date"><%= @news_item.postdate.to_s("%B %d, %Y") %></p> 

をe出力。デバッグエラーや例外は発生しません。

私はこれを行うことができますし、それは完全に正常に動作します:ここで

<p class="date"><%= Time.now.to_s("%B %d, %Y") %></p> 

は私のマイグレーションファイルです(私が使用したデータ・タイプを確認してください):

class CreateNewsItems < ActiveRecord::Migration 
    def change 
    create_table :news_items do |t| 

     t.date :postdate 

     t.timestamps 
    end 
    end 
end 

答えて

44

Date.to_sTime.to_sと同じではありません。あなたのpostdateはそうしたがって、あなたの代わりにstrftimeで見たいと思うかもしれません、Date次のとおりです。

postdate.strftime("%B %d, %Y") 

あるいはあなたのRailsアプリに独自のカスタム日付形式を追加するために見て:
Need small help in converting date format in ruby

+0

も参照してください - http://www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftime – JGrubb

+8

ワンマイナー注: 'strftimeの("%B型%の-d 、%Y ")'は人間の読みやすさのために少し良いです。 '%-d'は先頭の0を削除します。2013年5月6日=> 2013年5月6日 –

29

to_formatted_s機能すでにRailsのオブジェクトには人間が読める形式がいくつかあります。DateTime

datetime.to_formatted_s(:db)   # => "2007-12-04 00:00:00" 
datetime.to_formatted_s(:short)   # => "04 Dec 00:00" 
datetime.to_formatted_s(:long)   # => "December 04, 2007 00:00" 
datetime.to_formatted_s(:long_ordinal) # => "December 4th, 2007 00:00" 
datetime.to_formatted_s(:rfc822)  # => "Tue, 04 Dec 2007 00:00:00 +0000" 
datetime.to_formatted_s(:iso8601)  # => "2007-12-04T00:00:00+00:00" 
+5

これは_to_s_にエイリアスされています。 –

関連する問題