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

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

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

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

Ответы [ 3 ]

41 голосов
/ 22 апреля 2010

Идея состоит в том, чтобы использовать класс 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: -).

4 голосов
/ 22 апреля 2010

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

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

1 голос
/ 22 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...