📄 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 + -