Как преобразовать дату и время (с часовым поясом) в строку «месяц, день» в рубине / рельсах? - PullRequest
0 голосов
/ 08 февраля 2012

Я отображаю пользовательские сообщения на странице, и для каждого пользователя, которому пользователь А отправил или получил сообщение, назначено время создания.

Для каждой цепочки сообщений я хочу отобразить дату последнего сообщения в ветке. Я тяну время create_at, и оно показывает вот так:

2012-02-08 09:56:34 UTC

если я добавлю to_date в конце create_at, я смогу получить дату, чтобы показать это следующим образом:

2012-02-08

Я хотел бы знать простой способ преобразования любого из них во что-то вроде этого:

February 8

8 February

February 8th

8th February

, и если сообщение не создано_ в текущем году, отобразить год с датой

e.g. February 8, 2006

С уважением

Ответы [ 2 ]

4 голосов
/ 08 февраля 2012

Используйте strftime метод для форматирования даты. Например, вы можете сказать created_at.strftime("%B -d") для Febraury 8.

1 голос
/ 09 февраля 2012

Взгляните на to_formatted_s

Если вы установите его в инициализатор:

Time::DATE_FORMATS[:month_and_day] = lambda { |time| Time.now.year == time.year ? time.strftime("%B #{time.day.ordinalize}") : time.strftime("%B #{time.day.ordinalize}, %Y")}

тогда ваши представления могут использовать правильный формат:

created_at.to_s(:month_and_day)
...