ふなばです。

> 私の考えを先に延べておくと、私は%y, %m, %dについては明示的に
> 2桁までの制約をつけたほうがよいと思いました。%Yについては
> Y10K問題を考えると躊躇するところもあるのですが、実際問題とし
> て構文解析をする場合に4桁を越える数を許すメリットよりも、
> 20060807のような文字を解釈することができないデメリットの方が
> 大きいと思いました。

実際の利用のされかたを想像するとそうだと思います。

ただし、'%Y%m%d' を受けいれるとしても、かならずしも %Y は常に高々4桁、
と決めなければならないわけではないように思います。

書式のつぎの要素を見れば、

Date.strptime('20060401', '%Y%m%d')       => 2006-04-01
Date.strptime('12006 04 01', '%Y %m %d')  => 12005-04-01
Date.strptime('2006904901', '%Y9%m9%d')   => 2005-04-01

ということもできると思います。

それから、やるならば '%Y%m%d' が通ります、だけでは済まないので、

Date.strptime('3332006', "%j%Y')          => 2006-11-29
Date._strptime('212223', '%H%M%S')        => {:hour=>21, :min=>22, :sec=>23}
Date._strptime('FebAug', "%a%b')          => {:wday=>2,:mon=>8}

など、もう少し徹底的にやることになると思います。