Почему текущий год в дате сохраняется как 3912?
чтобы получить текущую дату и время
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
для создания текущего объекта даты
Date toDate;
toDate.setYear(mYear);
toDate.setMonth(mMonth);
toDate.setDate(mDay);
Date endDate = toDate;
при печати объекта endDate я получил
Mon Jan 01 13:11:00 GMT+03:00 3912
почему?
Ответы
Ответ 1
Из Date.setYear(int)
description: Устанавливает gregorian календарный год с 1900 года для этого объекта Date. Таким образом, 1900 + 2012 = 3912
.
Но calendar.get(Calendar.YEAR)
возвращает точный номер года 2012
. Таким образом, эта несогласованность API вызывает вашу проблему. Но в любом случае Date.setYear(int)
устарел, поэтому лучше использовать Calendar
объект для расчета даты.
Ответ 2
Лучше использовать Календарь
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR,myear);
(т.е.)
cal.set(Calendar.YEAR,2016);