Ruby / Rails - преобразование даты / времени обратно в естественный язык (2011-02-17 => 17 февраля 2011 г.) - PullRequest
6 голосов
/ 17 февраля 2011

Мне известен Chronic, анализатор естественного языка для преобразования языка в формат расчета базы данных, но мне интересно, как я могу преобразовать эти данные обратно в то, что люди могут легко понять.

Например:

Chronic.parse('today') => 2011-02-17 17:30:00 -0500

Так есть ли способ взять «2011-02-18 20:00:00» и представить его как «Пятница, 18 февраля 2011 года в 22:00» ??

По сути, обратная хроника?

Ответы [ 3 ]

4 голосов
/ 17 февраля 2011

Взгляните на strftime, это ссылка на это реализация для класса Time.

С его помощью вы сможете получить дату, чтобы сделать все, что вы хотите: -)

>> Time.now.strftime("%A, %B %d, %Y at %l%p")
=> "Thursday, February 17, 2011 at  5PM"
3 голосов
/ 17 февраля 2011

http://api.rubyonrails.org/classes/DateTime.html#method-i-to_formatted_s

Если вы хотите указать текущую дату и время, просто наберите:

Time.current.to_formatted_s(:long_ordinal)

, чтобы получить:

February 17th, 2011 12:16

Если вы хотитенаписать свой собственный формат API показывает, как вы можете сделать это по этой ссылке.Вот список доступных форматов:

%a  weekday name.
%A  weekday name (full).
%b  month name.
%B  month name (full).
%c  date and time (locale)
%d  day of month [01,31].
%H  hour [00,23].
%I  hour [01,12].
%j  day of year [001,366].
%m  month [01,12].
%M  minute [00,59].
%p  AM or PM
%S  Second [00,61]
%U  week of year (Sunday)[00,53].
w  weekday [0(Sunday),6].
W  week of year (Monday)[00,53].
x  date (locale).
%X  time (locale).
%y  year [00,99].
%Y  year [2000].
%Z  timezone name.

Единственная причина, по которой я рекомендую to_formatted_s в течение strftime, заключается в том, что с хорошим config / initializers / time_formats.rb вы можете сохранить ваши представления DRYer.

2 голосов
/ 16 июля 2013

Я был удивлен, что не было драгоценного камня "реверса хроники", поэтому я написал один. Он будет работать с вашими объектами ActiveRecord.

Просто gem install и вызовите метод 'pretty' для вашего поля selected_at или любого другого поля с классом ActiveSupport :: TimeWithZone.

https://github.com/brettshollenberger/hublot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...