Javaで日付文字列をパースする処理が必要になりました。 org.apache.commons.lang.time.DateUtilsを使えば複数のパターンを配列で指定できるそうなので、それを利用してやってみる。
ていうか、ロケールに合わせて yyyy/MM/dd とか yyyy.MM.dd とか yyyy-MM-dd とか、一般的に使用されそうなやつはデフォルトで対応しろよ、とか思うのですが、そこはJavaなのでハナから期待はしていません。

で、下記のようなコードを書いてみました。 区切り文字が /(スラッシュ), .(ドット)、-(ハイフン)という、かなり普通に使用されるであろうパターンです。

	import java.text.ParseException;
	import java.util.Date;
	import org.apache.commons.lang.time.DateUtils;

	public class Main {
	    public static void main(String[] args) {

	        String[] patterns = new String[] {"yyyy-MM-dd", "yyyy.MM.dd", "yyyy/MM/dd"};

	        String[] dateStringList = new String[] {"1973-05-30", "1973.5.30", "1973/5/30", "1972/16/60"};

	        for (String dateString : dateStringList) {
	            try {
	                Date d = DateUtils.parseDate(dateString, patterns);
	                System.out.printf("String=%s, Date=%s\n", dateString, d);
	            } catch (ParseException e) {
	                // TODO Auto-generated catch block
	                e.printStackTrace();
	            }
	        }
	    }
	}
	
で、結果は
53)

う〜ん、、、 1972/16/60 というありえない日付を 1973/05/30
とちゃんと解釈してくれています。ていうか、エラーにしろよ、とか思うのですが、まあ、この言語ではもうこういうのが当たり前なんだと、あきらめモード、、、。

でも、DateUtils.parseDateStrictly を使うと厳密に解釈してくれるそう。
で、やってみると結果は

05)

まあ、これが普通だと思うんだけど、、、。

ちなみにC#では、何もしなくても期待通り、、、。
43)

まあ、Rubyでも
55)

C#やRubyがお利口さんなだけです