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(); } } } }で、結果は

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

まあ、これが普通だと思うんだけど、、、。
C#やRubyがお利口さんなだけです