int day = Integer.parseInt(request.getParameter("day")); // 25
int month = Integer.parseInt(request.getParameter("month")); // 12
int year = Integer.parseInt(request.getParameter("year")); // 1988
System.out.println(year);
Calendar c = Calendar.getInstance();
c.set(year, month, day, 0, 0);
b.setDob(c.getTime());
System.out.println(b.getDob());
出力は次のとおりです。
1988
水曜日1月25日00:00:08 IST 1989
25 12 1988
を渡しますが、25 Jan 1989
を取得します。どうして?
カレンダーでは月はゼロから始まります。したがって、12は12月+ 1か月と解釈されます。つかいます
c.set(year, month - 1, day, 0, 0);
これは、Java 8より前の私のお気に入りの方法です。
Date date = new GregorianCalendar(year, month - 1, day).getTime();
これは次の方法よりもクリーンなアプローチだと思います。
calendar.set(year, month - 1, day, 0, 0);
Java 8に組み込まれたJava.time
フレームワークの使用
int year = 2015;
int month = 12;
int day = 22;
LocalDate.of(year, month, day); //2015-12-22
LocalDate.parse("2015-12-22"); //2015-12-22
//with custom formatter
DateTimeFormatter.ofPattern formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate.parse("22-12-2015", formatter); //2015-12-22
Time(hour、minute、second)に関する情報も必要な場合は、LocalDate
からLocalDateTime
への変換を使用してください。
LocalDate.parse("2015-12-22").atStartOfDay() //2015-12-22T00:00