Лучшая жемчужина для обработки разбора даты в проекте ruby ​​on rails - PullRequest
1 голос
/ 02 августа 2011

Я использую Rails 3 и мне нужно обработать дату события. Модель события имела столбец с именем event_date. Для обработки пользовательского ввода у меня есть что-то вроде

  def event_date_s
    self.event_date.strftime("%m/%d/%Y") if self.event_date
  end

  def event_date_s=(date)
    if date.blank?
      self.event_date = nil
    else
      self.event_date = Date.strptime(date, "%m/%d/%Y")
    end
  end

Это быстро становится грязным. Есть ли драгоценный камень, который я могу использовать, чтобы справиться со всем этим.

Ответы [ 2 ]

4 голосов
/ 03 августа 2011

Chronic - отличная библиотека для этого.В дополнение к базовой обработке дат ММ / ДД / ГГ и т. Д. Он выполняет такие функции:

1 голос
/ 03 января 2014

Имея тот же вопрос, я обнаружил, что застенчивость https://github.com/adzap/timeliness

Мне нравится, что он ограничивает или проверяет формат ввода.

Timeliness.parse('2010-09-08 12:13:14', :date, :strict => true)     #=> nil
Timeliness.parse('2010-09-08 12:13:14', :time, :strict => true)     #=> nil
Timeliness.parse('2010-09-08 12:13:14', :datetime, :strict => true) #=> Wed Sep 08 12:13:14 1000 2010 i.e. the whole string is used

ограничивает формат

Timeliness.parse('2010-09-08 12:13:14', :format => 'yyyy-mm-dd hh:nn:ss')  #=> Wed Sep 08 12:13:14 UTC 2010
Timeliness.parse('08/09/2010 12:13:14', :format => 'yyyy-mm-dd hh:nn:ss')  #=> nil

Расширяется с помощью пользовательских форматов и токенов.Это довольно быстро.До 60% быстрее, чем метод анализа времени / даты.Контролируйте строгость парсера.Управление поведением неоднозначных форматов даты (США против европейских, например, мм / дд / гг, дд / мм / гг).Поддержка I18n (в течение нескольких месяцев), если загружен I18n gem.Меньше WTF, чем метод синтаксического анализа времени / даты.Не имеет зависимостей.Работает с Ruby MRI 1.8. *, 1.9.2, Rubinius и JRuby.

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