Sep 25, 2009

Convert Calendar to Date

入力された年、月、日からDateクラスを生成する方法は
java.util.Date date = new Date(year, month, date);だった。
しかし↑の方法はもう推奨されてないため
Calendar cal = Calendar.getInstance();
cal.set(year, month, date);
java.sql.Date date = new java.sql.Date(cal.getTimeInMillis());
java.util.Date date = new java.util.Date(cal.getTimeInMillis());
これで変換できるはずだったが、
変な期間のデータをselectしたので(月がずれてしまう問題)
いろいろ調べた結果!

Calendarクラスのyearとdateは普通に1から始まるが、
monthは0が1月であることが分かった。

結局
cal.set(year, month - 1, date);
で解決したが、3時間の遅れが発生したのでこれは痛い。

今後2度も同じミスを犯さないようにメモしておく。