Почему текущий год в дате был сохранен как 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 

Зачем ?

Solutions Collecting From Web of "Почему текущий год в дате был сохранен как 3912?"

From Date.setYear(int) description: Устанавливает gregorian календарный год с 1900 года для этого объекта Date . Таким образом, 1900 + 2012 = 3912 .

Но calendar.get(Calendar.YEAR) возвращает точный номер года 2012 . Таким образом, эта несогласованность API вызывает вашу проблему. Но в любом случае Date.setYear(int) устарел, поэтому лучше использовать объект Calendar для расчета даты.

Лучше использовать Календарь

 Calendar cal=Calendar.getInstance(); cal.set(Calendar.YEAR,myear); 

(то есть)

 cal.set(Calendar.YEAR,2016);