Разбор даты в рельсах

У меня есть дата (которая фактически анализируется из PDF), и это может быть любой из следующих форматов:

MM/DD/YYYY
MM/DD/YY
M/D/YY
October 15, 2007
Oct 15, 2007 

Есть ли какой-либо драгоценный камень или функция, доступные в рельсах или рубине для анализа моей даты? Или мне нужно разобрать его с помощью регулярного выражения?

BTW Я использую ruby on rails 3.2.

Ответ 1

Вы можете попробовать Date.parse(date_string).

Вы также можете использовать Date#strptime если вам нужен конкретный формат:

> Date.strptime("10/15/2013", "%m/%d/%Y")
=> Tue, 15 Oct 2013

Для общего решения:

format_str = "%m/%d/" + (date_str =~ /\d{4}/ ? "%Y" : "%y")
date = Date.parse(date_str) rescue Date.strptime(date_str, format_str)

Ответ 2

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

https://github.com/mojombo/chronic