从年,月,日创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
如果您还需要有关时间(小时,分钟,秒)的信息,请使用从LocalDate
到LocalDateTime
一些转换
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和打印的模式。