Подтвердить что ты не робот

Каков приемлемый способ заменить java.util.Date(год, месяц, день)

Я пытаюсь сделать что-то действительно простое, но начинаю понимать, что даты в Java немного минные поля. Все, что я хочу, состоит в том, чтобы получить переданные группы из трех целых чисел (год, месяц и дата), создать несколько объектов Date, выполнить некоторые простые тесты на них (в соответствии с датой A до даты B и после 1 января 1990 года), преобразовать их в объекты java.sql.Date и передать их в базу данных через JDBC.

Все очень просто и отлично работает с помощью конструктора java.util.Date(int year,int month,int day). Конечно, этот конструктор обесценился, и я бы хотел избежать использования обесцененных вызовов в новом коде, который я пишу. Однако все остальные варианты решения этой простой проблемы кажутся глупо сложными. Неужели нет простого способа сделать то, что я хочу, без использования конструкторов с амортизацией?

Я знаю, что стандартный ответ на все вопросы, связанные с датой Java, - это использование времени joda, но я действительно не хочу начинать привлекать сторонние библиотеки для такой, казалось бы, тривиальной проблемы.

4b9b3361

Ответ 1

Идея состоит в том, чтобы использовать класс Calendar:

Calendar cal = Calendar.getInstance();
cal.set(year, month, date);
Date date = cal.getTime();

Действительно, если вы отметите Javadoc конструктора о котором вы говорите, это именно то, что предлагается:

Date(int year, int month, int date)
          Deprecated. As of JDK version 1.1, replaced by Calendar.set(year + 1900, month, date) or GregorianCalendar(year + 1900, month, date).

Или... используйте JodaTime: -).

Ответ 2

Ну, вы можете использовать устаревший конструктор. Он устарел более 13 лет и продолжает работать - он никуда не денется. Если вы не хотите этого делать и не хотите использовать стороннюю библиотеку, вам нужно использовать Календарь.

В Java 7, надеюсь, будет новый API времени, и вам больше не понадобится сторонний API.

Ответ 3

Ответ LG действителен, но в целом вы должны использовать Calendar для всех своих операций с датой и оставить Date вне его, если ваш API не требует его явно. В этом случае вы можете просто преобразовать его, передав его API.