从年,月,日创buildjavadate对象

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 25 12 1988 ,我25 Jan 1989 。 为什么?

日历中的月份为零。 所以12被解释为12月+ 1个月。 使用

 c.set(year, month - 1, day, 0, 0); 

java.time

使用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 

如果您还需要有关时间(小时,分钟,秒)的信息,请使用从LocalDateLocalDateTime一些转换

 LocalDate.parse("2015-12-22").atStartOfDay() //2015-12-22T00:00 

在Java 8之前,这是我最喜欢的方式:

 Date date = new GregorianCalendar(year, month, day).getTime(); 

我会说这是比以下更清洁的方法:

 calendar.set(year, month - 1, day, 0, 0); 

Java的日历performance不是最好的,他们正在为Java 8而努力。我build议你使用Joda Time或其他类似的库。

以下是使用Joda Time库中的LocalDate的一个简单示例:

 LocalDate localDate = new LocalDate(year, month, day); Date date = localDate.toDate(); 

在这里,您可以按照快速入门教程。

请参阅JavaDoc :

月 – 用于设置MONTH日历字段的值。 月份值是从0开始的。 例如1月份为0。

所以,你设定的月份是明年的第一个月。

在处理date,时间戳和持续时间时,让您的生活变得轻松。 使用HalDateTime

http://sourceforge.net/projects/haldatetime/?source=directory

例如,你可以用它来parsing你的input,像这样:

 HalDateTime mydate = HalDateTime.valueOf( "25.12.1988" ); System.out.println( mydate ); // will print in ISO format: 1988-12-25 

您还可以指定parsing和打印的模式。