Создание объекта даты java из года, месяца, дня
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());
вывод:
СР 25 января 00: 00: 08 IST 1989
Я 25 12 1988
но я 25 Jan 1989
. Зачем?
6 ответов:
месяцы основаны на нуле в календаре. Таким образом, 12 интерпретируется как Декабрь + 1 месяц. Используйте
c.set(year, month - 1, day, 0, 0);
Это мой любимый способ до Java 8:
Date date = new GregorianCalendar(year, month, day).getTime();
Я бы сказал, что это более чистый подход, чем:
calendar.set(year, month - 1, day, 0, 0);
java.время
используя
java.time
фреймворк встроенный в Java 8int 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 не самое лучшее, они работают над ним для Java 8. Я бы посоветовал вам использовать Джода Времени или другая подобная библиотека.
вот быстрый пример использования LocalDate из библиотеки времени Joda:
LocalDate localDate = new LocalDate(year, month, day); Date date = localDate.toDate();
здесь вы можете следовать краткое руководство по началу работы.
посмотреть документация:
месяц-значение, используемое для установки поля календаря месяца. Значение месяца является На основе 0. например, 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
вы также можете указать шаблоны для разбора и печати.