class FunDemo6
{
public static void main(String[] args)
{
//测试函数getDays
//System.out.println(getDays(1992,4,20));
System.out.println(subDays(1999,1,5,2001,3,10));
}
//判断是否为闰年
public static boolean isLeap (int y)
{
if(y%4==0&&y%100!=0||y%400==0)
return true;
else
return false;
}
//获取这一年已经过了多少天
public static int getDays(int y,int m,int d)
{
int sum=0;
switch(m-1){
case 11:sum=sum+30;
case 10:sum=sum+31;
case 9:sum=sum+30;
case 8:sum=sum+31;
case 7:sum=sum+31;
case 6:sum=sum+30;
case 5:sum=sum+31;
case 4:sum=sum+30;
case 3:sum=sum+31;
case 2:if(isLeap(y))//一个函数调用了另外一个函数
sum+=29;//函数不能嵌套声明
else
sum+=28;
case 1:sum=sum+31;
}
return sum+d;
}
//写一个函数,计算这个日期在这一年中还剩多少天
public static int otherDays(int y,int m,int d)
{
if(isLeap(y))
return 366-getDays(y,m,d);
else//可以省略
return 365-getDays(y,m,d);
}
//直接写一个函数,计算两个日期之间相隔的天数
public static int subDays(int y1,int m1,int d1,int y2,int m2,int d2)
{
if(y1==y2)
{
int days1=getDays(y1,m1,d1)-getDays(y2,m2,d2);
return abs(days1);
}
else if(y1<y2)
{
//小的年份剩下的+大的年已经过的+中间年
int sum1=otherDays(y1,m1,d1);
int sum2=getDays(y2,m2,d2);
int sum3=0;
for(int i=y1+1;i<y2;i++)
{
if(isLeap(i))
sum3+=366;
else
sum3+=365;
}
return sum1+sum2+sum3;
}
else//y2>y1时
{
int sum1=otherDays(y1,m1,d1);
int sum2=getDays(y2,m2,d2);
int sum3=0;
for(int i=y2+1;i<y1;i++)
{
if(isLeap(i))
sum3+=366;
else
sum+=365;
}
return sum1+sum2+sum3;
}
}
public static int abs(int n){
return n>=0?n:-n;
}
}