Dateのインスタンスを作るのに・・・

とある日時、例えば2007/02/03 10:11:12を示すDateのインスタンスを作りたい場合、
自分ならどうするかなぁーとふと考えてみた。

最初に思いつきそうな方法


GregorianCalendar gc = new GregorianCalendar(2007, 1, 3, 10, 11, 12);
Date date = gc.getTime();
なんてことはない。

2番目に思いつきそうな方法


Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(2007, 1, 3, 10, 11, 12);
Date date = cal.getTime();
直にGregorianCalenderを使わなかっただけ。
どーでもいい。

マイナーな方法


SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = sdf.parse("2007/02/03 10:11:12");
SimpleDateFormatから生成する。

で、何が言いたいかと言うと

Calenderの月が0から始まるところがすげーイヤ。
ぱっと見で、いつのDateを生成しているのか、よくわかんない。
これってよく勘違いするので、可読性が悪いと思う。


それに比べ、SimpleDateFormatを使うと、いつのDateを生成しているかすっきりする。
ただし弱点は、上記コードでは省略しているけど、ParseExceptionをキャッチしなきゃ
いけないところ・・・。この部分がびみょー。


まー結局はどの方法だっていいんだけど。
特定日時のDateのインスタンスなんて、そうそう作んないいし。
でも、Calenderの方がコストは低そうかな。
# というかSimpleDateFormatって、Caledner使ってDateを生成してんじゃん。