Я думал, что смогу создать GregorianCalendar
, используя конструктор, который принимает год, месяц и день, но я не могу надежно получить эти поля из экземпляра java.sql.Date
класс. Методы, которые получают эти значения из java.sql.Date
, устарели, и следующий код показывает, почему их нельзя использовать:
import java.sql.Date;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class DateTester {
public static void main(String[] args) {
Date date = Date.valueOf("2011-12-25");
System.out.println("Year: " + date.getYear());
System.out.println("Month: " + date.getMonth());
System.out.println("Day: " + date.getDate());
System.out.println(date);
Calendar cal = new GregorianCalendar(date.getYear(), date.getMonth(), date.getDate());
System.out.println(cal.getTime());
}
}
Вот вывод, показывающий, что месяц и год не возвращаются корректно из устаревших getYear()
и getMonth()
методов Date
:
Год: 111
Месяц: 11
День: 25
2011-12-25
Чт 25 декабря 00:00:00 EST 111
Поскольку я не могу использовать конструктор, который я пробовал выше, и нет никакого конструктора GregorianCalendar
, который просто принимает Date
, как я могу преобразовать java.sql.Date
объект в GregorianCalendar
?