Каков приемлемый способ заменить java.util.Date(год, месяц, день)
Я пытаюсь сделать что-то действительно простое, но начинаю понимать, что даты в Java немного минные поля. Все, что я хочу, состоит в том, чтобы получить переданные группы из трех целых чисел (год, месяц и дата), создать несколько объектов Date
, выполнить некоторые простые тесты на них (в соответствии с датой A до даты B и после 1 января 1990 года), преобразовать их в объекты java.sql.Date
и передать их в базу данных через JDBC.
Все очень просто и отлично работает с помощью конструктора java.util.Date(int year,int month,int day)
. Конечно, этот конструктор обесценился, и я бы хотел избежать использования обесцененных вызовов в новом коде, который я пишу. Однако все остальные варианты решения этой простой проблемы кажутся глупо сложными. Неужели нет простого способа сделать то, что я хочу, без использования конструкторов с амортизацией?
Я знаю, что стандартный ответ на все вопросы, связанные с датой Java, - это использование времени joda, но я действительно не хочу начинать привлекать сторонние библиотеки для такой, казалось бы, тривиальной проблемы.
Ответы
Ответ 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.