Большинство можно проанализировать с помощью Date.parse
.Но он не понимает их всех.
2.4.4 :013 > Date.parse("11-15-2012")
ArgumentError: invalid date
from (irb):13:in `parse'
from (irb):13
from /Users/schwern/.rvm/rubies/ruby-2.4.4/bin/irb:11:in `<main>'
Для любого, кого он не понимает, вы можете спастись от ArgumentError и попробовать свой собственный анализ с strptime .
require 'date'
def parse_date(date)
Date.parse(date)
rescue ArgumentError
Date.strptime(date, '%m-%d-%Y')
end
dates = ["2010/03/30", "15/12/2016", "11-15-2012", "20130720"]
puts dates.map { |date| parse_date(date) }