先设置一个类的属性
private int year; //年
private int month; //月
private int day; //日
判断是否为闰年的方法
public static boolean isLeapYear(int year) {//判断是否为闰年
if(year%400==0||(year%4==0&&year%100!=0))
return true;
else
return false;
}
算前n天的方法的方法
public static void Date(int year,int month,int day,int n) {
int a=year,b=month,c=day;
if(n<=0) {
for(int i=1;i<=Math.abs(n);i++) {
if(b==12&&c==31){
a++;
b=1;
c=1;
}
else if(isLeapYear(year)) {
if((b==1||b==3||b==5||b==7||b==8||b==10||b==12)&&c==31) {
b=b+1;
c=1;
}
else if((b==4||b==6||b==9||b==11)&&c==30) {
b=b+1;
c=1;
}
else if(b==2&&c==29) {
b=b+1;
c=1;
}
else {
c=c+1;
}
}
else if(isLeapYear(year)==false) {
if((b==1||b==3||b==5||b==7||b==8||b==10||b==12)&&c==31) {
b=b+1;
c=1;
}
else if((b==4||b==6||b==9||b==11)&&c==30) {
b=b+1;
c=1;
}
else if(b==2&&c==28) {
b=b+1;
c=1;
}
else {
c=c+1;
}
}
}
}
if(n>=0) {
for(int i=1;i<=n;i++) {
if(b==1&&c==1){
a--;
b=12;
c=31;
}
else if(isLeapYear(year)) {
if((b==2||b==4||b==6||b==8||b==9||b==11)&&c==1) {
b--;
c=31;
}
else if((b==5||b==7||b==10||b==12)&&c==1) {
b--;
c=30;
}
else if(b==3&&c==1) {
b--;
c=29;
}
else {
c=c-1;
}
}
else if(isLeapYear(year)==false) {
if((b==1||b==2||b==5||b==7||b==8||b==10||b==12)&&c==1) {
b--;
c=31;
}
else if((b==4||b==6||b==9||b==11)&&c==1) {
b--;
c=30;
}
else if(b==3&&c==1) {
b--;
c=28;
}
else {
c=c-1;
}
}
}
}
System.out.println(n+" days ago is:"+a+"-"+b+"-"+c);
}
n是前n天的天数,如果n>0,则是前n天,n<0是后n天。代码有点乱,虽然能实现要求不过但是对于如果很大的数运算起来非常慢,效率太低。有没有更好的解决方法?请广大网友只指点指点。哈哈