Calendar.get(Calendar.YEAR)返回错误的年份

Mil*_*ita -2 java calendar date

我正在尝试从日期获取年份,并且Calendar.get(Calendar.YEAR)我获得3917年而不是2017年?但是,当我尝试检查输出时,date.getYear()它将返回正确的年份。

Date date = new Date(year, month, day);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
Log.d(TAG, "onClick: year "+date.getYear());
Log.d(TAG, "onClick: year "+calendar.get(Calendar.YEAR));
Run Code Online (Sandbox Code Playgroud)

输出:

onClick:2017年

onClick:3917年

日期类显示正确的年份,但日历显示错误的年份

Dar*_*hta 5

Date类的Javadoc,它表示您正在使用的构造函数:

不推荐使用。从JDK 1.1版开始,由Calendar.set(year + 1900,month,date)或GregorianCalendar(year + 1900,month,date)取代。

分配一个Date对象并对其进行初始化,以使其表示年,月和日参数指定的一天开始时的午夜,当地时间。

另外,这是参数的说明:

参数

year-减去1900的年份。

month-0-11之间的月份。

日期-1到31之间的月份。

由于它增加1900了您通过的价值,因此,您得到的最终年为3917