为什么当前年份保存为3912?

Bad*_*der 10 android calendar date

获取当前日期和时间

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);
Run Code Online (Sandbox Code Playgroud)

创建当前日期对象

Date toDate;
     toDate.setYear(mYear);
     toDate.setMonth(mMonth);
     toDate.setDate(mDay);



Date endDate = toDate;
Run Code Online (Sandbox Code Playgroud)

当我打印endDate对象时

Mon Jan 01 13:11:00 GMT+03:00 3912
Run Code Online (Sandbox Code Playgroud)

为什么?

Ale*_*iks 18

来自Date.setYear(int)描述:为此Date对象设置自1900年以来的格里历年.因此,1900 + 2012 = 3912.

但是calendar.get(Calendar.YEAR)返回确切的年份数2012.因此API的这种不一致会导致您的问题.但无论如何Date.setYear(int)都不推荐使用,因此,最好使用Calendar对象进行日期计算.