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
. 왜?
답변
달력에서 월은 0부터 시작합니다. 따라서 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.time
java.time
Java 8에 내장 된 프레임 워크 사용
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
시간 (시, 분, 초)에 대한 정보도 필요하면에서 LocalDate
로 변환을 사용하십시오.LocalDateTime
LocalDate.parse("2015-12-22").atStartOfDay() //2015-12-22T00:00
답변
답변
JavaDoc 참조 :
month-MONTH 달력 필드를 설정하는 데 사용되는 값. 월 값은 0부터 시작합니다. 예 : 1 월의 경우 0.
따라서 설정 한 달은 다음 해의 첫 번째 달입니다.
답변
날짜, 타임 스탬프 및 기간으로 작업 할 때 생활을 편하게 만드십시오. HalDateTime 사용
http://sourceforge.net/projects/haldatetime/?source=directory
예를 들어 다음과 같이 입력을 구문 분석하는 데 사용할 수 있습니다.
HalDateTime mydate = HalDateTime.valueOf( "25.12.1988" );
System.out.println( mydate ); // will print in ISO format: 1988-12-25
구문 분석 및 인쇄를위한 패턴을 지정할 수도 있습니다.