Календарь .YEAR, .MONTH, DAY_OF_MONTH отличается от date.getDay () и т. Д.? - PullRequest
5 голосов
/ 28 июля 2011

Я понял это:

Calendar c = new GregorianCalendar();
mYear=c.get(Calendar.YEAR);
mMonth=c.get(Calendar.MONTH);
mDay=c.get(Calendar.DAY_OF_MONTH);

А это:

Date d = c.getTime();
int day = d.getDay();
int month = d.getMonth();
int year= d.getYear();

Получите разные числа, есть какая-то инициализация, которую я пропускаю? Я забочусь, потому что я использую ORMLite и пытаюсь сохранить даты в базе данных, которая является объектом Date, но Date устарела, и поэтому я пытаюсь сейчас использовать Calendar, но это не так просто, так как приведенный выше код приводит к разные ответы для дня, месяца и года.

1 Ответ

11 голосов
/ 28 июля 2011

Date.getYear(), getMonth() and getDay() устарели и специально просят вас использовать Calendar.get ()

Причина, по которой вы получаете разные ответы, двукратная

getDay() возвращает деньнедели, а не даты - используйте getDate() здесь

getYear() год возврата - 1900

Вот соответствующее примечание из документации API

Запрещены.Начиная с версии 1.1 JDK, заменено Calendar.get (Calendar.YEAR) - 1900.

http://download.oracle.com/javase/6/docs/api/java/util/Date.html#getYear%28%29

...