Подтвердить что ты не робот

Преобразование даты и времени в месяц, день и год?

Я не могу найти это, и мне кажется, что это должно быть легко. В Ruby on Rails, как мне взять:

2010-06-14 19:01:00 UTC

и превратите его в

June 14th, 2010

Могу ли я не просто использовать помощник в представлении?

4b9b3361

Ответ 1

Я не знаю, для

June 14th, 2010

Но если вы хотите

June 14, 2010

Ref как получить имя месяца в ruby ​​on Rails? или this

Просто сделай

@date = Time.now
@date.strftime("%B %d, %Y")

И для суффикса используйте следующий

@date.strftime("%B #{@date.day.ordinalize}, %Y") # >>> Gives `June 18th, 2010`

Ответ 3

Форматы времени и даты в рельсах:

Дата

====

db:‘%Y-%m-%d’   2008-08-20

long_ordinal:‘&proc’      August 20th, 2008

long:‘%B %e, %Y’  August 20, 2008

rfc822:‘%e %b %Y’   20 Aug 2008

number:‘%Y%m%d’     20080820

short:‘%e %b’      20 Aug

DateTime

====

db:‘%Y-%m-%d’   2008-08-20 16:56:21

long_ordinal:‘&proc’      August 20th, 2008 16:56

long:‘%B %e, %Y’  August 20, 2008 16:56

rfc822:‘%e %b %Y’   Wed, 20 Aug 2008 16:56:21 -0600

number:‘%Y%m%d’     20080820165621

short:‘%e %b’      20 Aug 16:56

Время

====

db:‘%Y-%m-%d %H:%M:%S’         2008-08-20 16:56:21

long_ordinal:‘&proc’           August 20th, 2008 16:56

long:‘%B %d, %Y %H:%M’           August 20, 2008 16:56

rfc822:‘%a, %d %b %Y %H:%M:%S %z’  Wed, 20 Aug 2008 16:56:21 -0600

short:‘%d %b %H:%M’               20 Aug 16:56

number:‘%Y%m%d%H%M%S’              20080820165621

time:‘%H:%M’                     16:56

например:

<%= news.created_at.strftime("%B %d, %Y %H:%M") %>

Спасибо http://onrails.org/2008/08/20/what-are-all-the-rails-date-formats.html

Ответ 4

Вам не нужно сохранять его в переменной.

Time.now.strftime("%Y-%m-%d")  # 2013-01-08

Ответ 5

Требуется модуль Time для Time.parse и ActiveSupport для Integer#ordinalize:

require 'time'
require 'active_support'

input = '2010-06-14 19:01:00 UTC'
t = Time.parse(input)
date = "%s %s, %d" % [t.strftime("%B"), t.day.ordinalize, t.year]
# => "June 14th, 2010"

Ответ 7

На днях был аналогичный вопрос. В моем ответе как получить имя месяца в ruby ​​на Rails? Я показал, как вы можете добавить пользовательское определение to_s в ваш файл config/environment.rb.

ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(
 :my_own_long_date_format => "%B %d, %Y")

Теперь вы можете вызвать Time.now.to_s(:my_own_long_date_format) из любого вида, чтобы получить:

June 15, 2010