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

时间:2012-01-01 11:20:28

标签: android date calendar

获取当前日期和时间

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 个答案:

答案 0 :(得分:18)

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

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

答案 1 :(得分:0)

最好使用日历

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

(即)

cal.set(Calendar.YEAR,2016);