Почему текущий год в дате сохранен как 3912? - PullRequest
10 голосов
/ 01 января 2012

чтобы получить текущую дату и время

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

почему?

Ответы [ 2 ]

18 голосов
/ 01 января 2012

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

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

0 голосов
/ 11 апреля 2016

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

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

(то есть)

cal.set(Calendar.YEAR,2016);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...