import java.util.Calendar;
public class T {
public static void main(String[] args) {//计算1100年的天数,应该是365天。但是为什么输出错误呢
Calendar calendar=Calendar.getInstance();
int year=1100,month=11,date=31; //1100年12月31日。距离1100年1月1日天数
long day=0;
calendar.set(year, month, date);
long time1=calendar.getTimeInMillis();
calendar.set(year, 0, 1);
long time2=calendar.getTimeInMillis();
day=(time1-time2)/1000/24/60/60+1;
System.out.println(day); //实际输出366
calendar.set(year+2000, month, date); //这里+2000就可以了
time1=calendar.getTimeInMillis();
calendar.set(year+2000, 0, 1);
time2=calendar.getTimeInMillis();
day=(time1-time2)/1000/24/60/60+1;
System.out.println(day); //实际输出365
calendar.set(year+1, month, date); //1101年天数
time1=calendar.getTimeInMillis();
calendar.set(year+1, 0, 1);
time2=calendar.getTimeInMillis();
day=(time1-time2)/1000/24/60/60+1;
System.out.println(day); //输出 365
}
}
为什么呢?照例来说 第一个 输出的应该也是365天额。。。1100年不是润年额。。。
1100年 不是闰年吧。。。
追答这个不好说,闰年的规则是很复杂不是简单的四年一闰,百年不闰,四百年再闰
另外,Calendar类有BUG也不是不可能
现在的公历,在历史上好像有一段时间跳过去了,例如1号过了就直接是13号
中间一段时间没了
Calendar也是人写的,有错也不奇怪
你可以请该问题提交给java官网,不定下一版本就修正了