Class FunDemo6
{
public static void Main (string[] args)
{
test function getDays
System.out.println (GetDays (1992,4,20));
System.out.println (Subdays (1999,1,5,2001,3,10));
}
determine if a leap year
public static Boolean isleap (int y)
{
if (y%4==0&&y%100!=0| | y%400==0)
return true;
Else
return false;
}
get how many days this year has passed
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))// a function called another function
sum+=29;// functions cannot nest declarations
Else
sum+=28;
Case 1:sum=sum+31;
}
return sum+d;
}
Write a function that calculates how many days are left in the year for this date
public static int otherdays (int y,int m,int D)
{
if (Isleap (y))
Return 366-getdays (Y,M,D);
else// can be omitted
Return 365-getdays (Y,M,D);
}
write a function directly to calculate the number of days separated by two dates
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)
{
Small year remaining + big year already over + Middle year
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;
}
when 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;
}
}
Calculate two days separated by the number of ideas: Suppose 1998-10-10 2010-5-5 first get 1889-10-10 This date how many days left in this year again get 2010-5-5 this day has been over in this year