?? date.java
字號:
//本程序可實現
//功能1:計算當前日期向后或向前數日的日期
//功能2:計算當前日期和特定日期的間隔天數
import java.io.*;
class Date
{
private int year;
private int mouth;
private int day;
//構造方法
public Date (int y,int m,int d)
{setDate(y,m,d);
}
//設置初始時間
private void setDate (int y,int m,int d)
{year=y;
mouth=m;
day=d;
}
//加一天
private void addDays()
{int i;
day++;
switch(mouth)
{case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(day>31)
{day=1;
mouth++;
if(mouth==13)
{mouth=1;
year++;
}
}
break;
case 2:i=judgeYear(year);
if(i==1)
{if(day>29)
{day=1;mouth++;}
}
else
{if(day>28)
{day=1;mouth++;}
}
break;
case 4:
case 6:
case 9:
case 11:if(day>30)
{day=1;mouth++;}
}
}
//減一天
private void subDays()
{int i;
day--;
switch(mouth)
{
case 5:
case 7:
case 10:
case 12:if(day==0)
{day=30;
mouth--;
}
break;
case 3:
if(day==0)
{i=judgeYear(year);
if(i==1)
{day=29;mouth--;}
else
{day=28;mouth--;}
}
break;
case 1:
case 2:
case 4:
case 6:
case 8:
case 9:
case 11:if(day==0)
{day=31;
mouth--;
if(mouth==0)
{mouth=12;year--;}
}
}
}
//判斷是不是潤年
private int judgeYear(int year)
{int i;
if(year%4==0)
i=1;
else
i=0;
if((year%100==0)&&(year%400!=0))
i=0;
return i;
}
//計算當前日期與指定的某日的間隔天數
//設置公元1年1月1日為基準點
private int countDays(int y,int m,int d)
{int i,n=0,k=0;
//計算當前日期到基準點的間隔天數n
for(i=1;i<year;i++)
{if(judgeYear(i)==1)
n=n+366;
else
n=n+365;
}
for(i=1;i<mouth;i++)
{switch(i)
{case 1:
case 3:
case 5:
case 7:
case 8:
case 10:n=n+31;break;
case 2:if(judgeYear(year)==1)
n=n+29;
else
n=n+28;
break;
case 4:
case 6:
case 9:
case 11:n=n+30;break;
}
}
n=n+day;
//計算目標日期到基準點的間隔天數k
for(i=1;i<y;i++)
{if(judgeYear(i)==1)
k=k+366;
else
k=k+365;
}
for(i=1;i<m;i++)
{switch(i)
{case 1:
case 3:
case 5:
case 7:
case 8:
case 10:k=k+31;break;
case 2:if(judgeYear(y)==1)
k=k+29;
else
k=k+28;
break;
case 4:
case 6:
case 9:
case 11:k=k+30;break;
}
}
k=k+d;
//返回倆日期的間隔天數
return (Math.abs(n-k));
}
//主方法
public static void main (String[] args)throws IOException
{BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int y,m,d,days,j,n=0,k,p;
String year,mouth,day,i;
//創建新對象date
Date date=new Date(0,0,0);
do{
p=0;
System.out.println("\n請設置當前日期");
System.out.print(" 年份:");
year=br.readLine();
y=Integer.parseInt(year);
System.out.print(" 月份: ");
mouth=br.readLine();
m=Integer.parseInt(mouth);
System.out.print(" 日份: ");
day=br.readLine();
d=Integer.parseInt(day);
switch(m)
{case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:if(d>31||d<1)
{System.out.println("日期設置錯誤,請重新設置");p=1;}
break;
case 4:
case 6:
case 9:
case 11:if(d>30||d<1)
{System.out.println("日期設置錯誤,請重新設置");p=1;}
break;
case 2:k=date.judgeYear(y);
if(k==1)
{if(d>29||d<1)
{System.out.println("日期設置錯誤,請重新設置");p=1;}
}
else
{if(d>28||d<1)
{System.out.println("日期設置錯誤,請重新設置");p=1;}
}
break;
default:System.out.println("日期設置錯誤,請重新設置");
p=1;
}
}while(p==1);
date.setDate(y,m,d);
System.out.println("當前日期:"+date.year+"年"+date.mouth+"月"+date.day+"日");
do{
System.out.println("\n功能菜單:");
System.out.println(" 1.向前數日");
System.out.println(" 2.向后數日");
System.out.println(" 3.重新設置當前日期");
System.out.println(" 4.計算當前日期與某天的間隔天數");
System.out.println(" 5.退出");
System.out.print("請輸入你的選擇:");
i=br.readLine();
n=Integer.parseInt(i);
switch(n)
{case 1:System.out.println("\n當前日期:"+date.year+"年"+date.mouth+"月"+date.day+"日");
System.out.print("向前天數:");
String D=br.readLine();
days=Integer.parseInt(D);
for(j=1;j<=days;j++ )
date.addDays();
System.out.println("目標日期:"+date.year+"年"+date.mouth+"月"+date.day+"日");
break;
case 2:System.out.println("\n當前日期:"+date.year+"年"+date.mouth+"月"+date.day+"日");
System.out.print("向后天數:");
String H=br.readLine();
days=Integer.parseInt(H);
for(j=1;j<=days;j++ )
date.subDays();
System.out.println("目標日期:"+date.year+"年"+date.mouth+"月"+date.day+"日");
break;
case 3:System.out.println("\n請設置當前日期");
System.out.print(" 年份:");
year=br.readLine();
y=Integer.parseInt(year);
System.out.print(" 月份: ");
mouth=br.readLine();
m=Integer.parseInt(mouth);
System.out.print(" 日份: ");
day=br.readLine();
d=Integer.parseInt(day);
date.setDate(y,m,d);
System.out.println("當前日期:"+date.year+"年"+date.mouth+"月"+date.day+"日");
break;
case 4:
System.out.println("\n設置目標日期:");
System.out.print(" 年份:");
year=br.readLine();
y=Integer.parseInt(year);
System.out.print(" 月份: ");
mouth=br.readLine();
m=Integer.parseInt(mouth);
System.out.print(" 日份: ");
day=br.readLine();
d=Integer.parseInt(day);
System.out.println("\n當前日期:"+date.year+"年"+date.mouth+"月"+date.day+"日");
System.out.println("目標日期:"+y+"年"+m+"月"+d+"日");
System.out.println("間隔天數:"+date.countDays(y,m,d));
}
}while(n!=5);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -