Dateのインスタンスを作るのに・・・
とある日時、例えば2007/02/03 10:11:12を示すDateのインスタンスを作りたい場合、
自分ならどうするかなぁーとふと考えてみた。
最初に思いつきそうな方法
なんてことはない。
GregorianCalendar gc = new GregorianCalendar(2007, 1, 3, 10, 11, 12);
Date date = gc.getTime();
2番目に思いつきそうな方法
直にGregorianCalenderを使わなかっただけ。
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(2007, 1, 3, 10, 11, 12);
Date date = cal.getTime();
どーでもいい。
マイナーな方法
SimpleDateFormatから生成する。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = sdf.parse("2007/02/03 10:11:12");
で、何が言いたいかと言うと
Calenderの月が0から始まるところがすげーイヤ。
ぱっと見で、いつのDateを生成しているのか、よくわかんない。
これってよく勘違いするので、可読性が悪いと思う。
それに比べ、SimpleDateFormatを使うと、いつのDateを生成しているかすっきりする。
ただし弱点は、上記コードでは省略しているけど、ParseExceptionをキャッチしなきゃ
いけないところ・・・。この部分がびみょー。
まー結局はどの方法だっていいんだけど。
特定日時のDateのインスタンスなんて、そうそう作んないいし。
でも、Calenderの方がコストは低そうかな。
# というかSimpleDateFormatって、Caledner使ってDateを生成してんじゃん。