ALDateTimeFieldクラスのgetMonth()とDateクラスのgetMonth()の違い

 aipoのプログラムには、ライブラリに元々入っているクラスやメソッドだけでなく、aipo内で定義したクラスやメソッドが多数存在している。
 そして、中にはライブラリ内のメソッドと同じ名前を持ちながら処理が異なるものも存在している。その一つが、getMonthメソッドである。

 getMonthメソッドは、ライブラリに元々入っているDateクラスにも存在しているオブジェクトであり、Dateクラスでは

Date.getMonth()


で呼び出すことが出来る。これにはint型の戻り値が設定されており、その値の範囲は0〜11である。
 それぞれの値は、0が1月、1が2月、11が12月を指している。

 一方、aipoのALDateTimeFieldクラスにもgetMonthメソッドが存在している。こちらも同様に、

ALDateTimeField.getMonth()


で呼び出すことが出来る。しかし、これの戻り値はString型である。また、その値の範囲も”1″〜”12″となっている。

 なぜこのように、挙動が異なっているのかというと、ALDateTimeField内で

month=Integer.toString(calendar.get(Calendar.MONTH)+1);


と月を定義しているからである。
 このように定義しておけば、例えばDB内の情報とALDateTimeField内の情報を照らし合わせる際に、

Integer.toString(ALDateTimeField.getMonth()+1)


という風な煩わしいコードを書くことなく照らし合わせることが出来る。

 しかし、DateクラスのgetMonthメソッドと混同してしまう恐れもあるため、注意が必要である。
※DateクラスのgetMonthメソッドは推奨されておらず、JDKバージョン1.1以降はCalendar.get(Calendar.MONTH)に置き換えられている。Calendar.get(Calendar.MONTH)の戻り値は、数値で0〜11である。