我正在为 Android 构建一个 CalendarDisplay 应用程序。除其他外,此应用程序允许用户选择添加到一个纪元的天数(纪元是 1899 年的日期),该结果将以图形方式显示在显示屏上。但是,当我从日历值设置日期值时,我得到了意想不到的结果:年份似乎偏离了 1900 的值。虽然我可以简单地将 1900 添加到结果中,但这似乎是错误的答案,因为我正在做是(我相信)书本上的。或者我可以继续我所拥有的;这也有效。但这分享了同样的问题。这是代码,带有用于调试的备用变量:
public void gotoCal(int days) {
// epochCal has been initialized as follows:
// (HYF_BASE_YEAR = 1899, HYF_BASE_MONTH = 11, HYF_BASE_DAY = 1)
// epochCal = (Calendar) Calendar.getInstance();
// epochCal.set(HYF_BASE_YEAR, HYF_BASE_MONTH, HYF_BASE_DAY);
Calendar cal = (Calendar) epochCal.clone();
cal.add(Calendar.DATE, days);
int year = cal.get(Calendar.YEAR);
Date date = cal.getTime();
int year2 = date.getYear();
if (year2 != year) {
date.setYear(year);
}
int year3 = date.getYear();
gotoDate(date);
}
现在,当我在调试模式下以 gotoCal(40000) 运行此代码时,在 gotoDate() 行有一个断点,我在字段中看到以下值:year = 2009、year2 = 109、year3 = 2009
Calendar.getTime() 函数是否应该返回过去 1900 年的日期(我没有看到这样的文档)?或者我可能正在做一些事情来影响它这样做?或者我可能做错了什么?