web-dev-qa-db-ja.com

人間が読める日付を表示するための日付オブジェクトのフォーマット

表示したいものは次のとおりです。

May 13, 2012

表示される内容は次のとおりです。

2012-05-13

いくつかの答えを探した結果、「 Rubyでの日付と浮動小数点の書式設定 」に導かれました。

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

ただし、これは出力をまったく変更しません。デバッグエラーや例外は発生しません。

私はこれを行うことができ、それは完全にうまく機能します:

<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
33
sergserg

Date.to_sTime.to_sと同じではありません。 postdateDateであるため、代わりに strftime をご覧ください。

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

または、独自のカスタム日付形式をRailsアプリに追加してください:
Rubyでの日付形式の変換に小さな助けが必要

52
Casper

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"
41
FernandoEscher