The parse
method attempts to find matching date or date-time formats, then parse the string to return the values used to create a new Date or DateTime. There are many different formats it supports, which is convenient, however the process of scanning to find a match slows the parsing time.
Also, some formats in common use don't necessary "fit". Consider what's happening here:
Date.parse '31/01/2001'
=> #<Date: 2001-01-31 ((2451941j,0s,0n),+0s,2299161j)>
The date string in '%d/%m/%Y'
(day, month, year) format is parsed, though it's not common in the U.S., because Ruby isn't a US-centric language. Reversing the first two fields results in:
Date.parse '01/31/2001'
ArgumentError: invalid date
from (irb):4:in `parse'
from (irb):4
from /Users/greg/.rbenv/versions/2.1.5/bin/irb:11:in `<main>'
irb(main):005:0> Date.parse '31/01/2001'