Форматирование объекта даты для отображения прочитанной человеком даты
Здесь я хотел бы отображать:
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
Ответы
Ответ 1
Date.to_s
не совпадает с Time.to_s
. Ваш postdate
- это Date
, поэтому вам может потребоваться вместо strftime
:
postdate.strftime("%B %d, %Y")
Или попробуйте добавить свой собственный формат даты в приложение Rails:
Нужна небольшая помощь в преобразовании формата даты в рубине
Ответ 2
Функция to_formatted_s уже имеет некоторые обычные читаемые пользователем форматы для объектов DateTime
в Rails.
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"