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