rails - разбирать военное время на AM / PM, используя хронические? - PullRequest
0 голосов
/ 01 июля 2010

Я использовал Chronic, анализатор естественного языка и его класс. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я не могу разобрать военное время, которое возвращает меня к некоторой форме времени AM / PM, которая была бы нормальной для пользователя, чтобы видеть.

 <%= Chronic.parse("next monday") %>

урожайность => пн июл 05 12:00:00 -0500 2010

Есть ли способ вернуться назад, чтобы я мог разобрать "Пн Июл 05 12:00:00 -0500 2010" в "Понедельник 5 июля 5:00 AM" или, еще лучше, просто "5:00 AM"?

Странно, я знаю, но я думал, что кто-то должен был иметь дело с этим раньше.

1 Ответ

2 голосов
/ 01 июля 2010

Хроник НЕ возвращает строку

Mon Jul 05 12:00:00 -0500 2010

Скорее, Chronic возвращает экземпляр класса Time

Поскольку erb <% = xxx%> хочет строку, .to_s вызывается автоматически. Итак, что на самом деле происходит:

<%= Chronic.parse("next monday").to_s %>

Похоже, вы хотите другой формат вывода. Используйте метод strftime

<%= Chronic.parse("next monday").strftime("%I:%M %p") %>
  ==> 05:00 AM

or
<%= Chronic.parse("next monday").strftime("%A %B %I:%M %p") %>
  ==> Monday July 5 05:00 AM

(Я оставлю читателю в качестве упражнения выяснить, как сделать это 5 июля, а не 5 июля или 5:00, а не 05:00. Или задать еще один вопрос на SO)

Добавлено:

Также обратите внимание, что вам нужно знать о часовых поясах. Хронический анализ использует местное время и местные часовые пояса. (Локально для сервера.) Вот что означает -0500. Вам нужно решить, как обрабатывать часовые пояса в вашем приложении.

...