java.util.Dateの不具合

------------------------------------

JDKには年月日などを扱うクラスjava.util.Dateが準備されています。だから誕生日と計算する日のインスタンス変数は

Date birthday, calculateDay

とするのが本来です。

------------------------------------

ところが、JDK1.0.2java.util.Dateには1970年1月1日から2037年12月31日までしか扱えないという問題があります。

これは次のコードをコンパイルして実行してみるとわかります。

class DateTest {

    public static void main(String args[]) {

        java.util.Date d = new java.util.Date(69, 11, 12);

        System.out.println(d.toString());

    }

}

コンパイルは問題なくできますが、いざ実行となると

Exception in thread "main" java.lang.IllegalArgumentException:year out of range.

とエラーが出てしまいます。

これでは1970年より前に生まれた人のバイオリズムが計算できなくなってまずいです。

------------------------------------

こういう場合はjava.util.Dateを拡張したサブクラスを作って問題を避けるというのが正攻法です。

「でもJDK1.1では問題直ってるだろうし、JDK1.1だとjava.util.Calendarやら何やらワケわからんクラス使わんとアカンしなあ」と面倒くさくなったのでお茶を濁しました。

でも、この部分でjava.util.Dateのサブクラスを使用しなかったために見通しが悪くなったところはあるので、時間があれば改善したいと思っています。

------------------------------------

「メイキング・オブ・バイオリズム」のページへ