Я не претендую на лучшее решение когда-либо, но это должно сработать.
def valid_date?(date)
Date.parse(date).strftime("%d %b %Y %a") == date
end
[55] pry(main)> valid_date?("20 Jul 2016 Wed")
=> true
[56] pry(main)> valid_date?("20 Jul 2016 Mon")
=> false
[57] pry(main)>
Если у вас есть много форматов, вы можете передать формат в качестве второго аргумента
def valid_date?(date, fmt)
Date.parse(date).strftime(fmt) == date
end
=> :valid_date?
[59] pry(main)> valid_date?("20 Jul 2016 Wed", "%d %b %Y %a")
=> true
Надежда это поможет.
UPDATE
Как я уже говорил в комментариях, что имя метода совпадает с существующим методом valid_date?
Таким образом, вы можете просто переименовать пользовательский метод
def date_valid?(date, fmt)
Date.parse(date).strftime(fmt) == date
end
[2] pry(main)> date_valid?("20 Jul 2016 Wed", "%d %b %Y %a")
=> true
Вы получаете дату в виде строки или объекта даты – SpunkyLive
@SpunkyLive String – mrg