从创建的java年Date对象,月,日(Creating java date object from

2019-09-02 15:29发布

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日12点00分08秒IST 1989

我传递25 12 1988 ,但我得到25 Jan 1989 。 为什么?

Answer 1:

月份是从零开始的日历。 所以,12被解释为十二月+ 1个月。 使用

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


Answer 2:

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

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

我会说这是不是一个更简洁的方法:

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


Answer 3:

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

如果您还需要了解信息的时间(小时,分,秒)使用一些转换LocalDateLocalDateTime

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


Answer 4:

Java的日历表示是不是最好的,他们正在研究它的Java 8.我会建议你使用乔达时间或其他类似的库。

下面是使用从LOCALDATE将约达时间库一个简单的例子:

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

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



Answer 5:

见的JavaDoc :

month - 用来设置MONTH日历字段的值。 Month值是基于0。 例如,0代表一月。

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



Answer 6:

让您的生活轻松使用日期,时间戳和持续时间的工作时。 使用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

您还可以指定用于解析和印刷图案。



文章来源: Creating java date object from year,month,day