这个思路挺巧妙的
Java实现增加n天后的日期
类似日期计算器
以下是代码
实现类Mydate.java和测试类TestEx201.java
MyDate.java
package nextDate;
public class MyDate
{
private int day = 1;
private int month = 1;
private int year = 2000;
public void print() //打印时间
{
System.out.println(year+"年"+month+"月"+day+"日");
}
public MyDate(int year,int month,int day) //参数为具体年月日
{
this.day = day;
this.month = month;
this.year = year;
}
public MyDate(MyDate date) //参数为对象
{
this.day = date.day;
this.month = date.month;
this.year = date.year;
}
public MyDate addDays(int add_days,MyDate new_date) //计算日期,参数为需要增加的天数和现在的日期
{
MyDate temp_date = new MyDate(new_date); //临时对象,不改变现在的日期
while(true) //死循环
{
temp_date = nextDay(temp_date); //计算下一天
add_days--; //要增加的天数--
if(add_days == 0) //当要增加的天数等于0时,停止循环
break;
}
return temp_date;
}
public MyDate nextDay(MyDate date) //计算下一天
{
if(date.day == isLastDays(date.year,date.month)) //如果是月底
{
date.day = 1; //那么下一天则置天数为1
date.month++; //月份++
if(date.month == 13) //如果是年底
{
date.month = 1; //那么月份置为1
date.year++; //年份加1
}
}
else //如果不是月底,天数加一即可
date.day++;
return date;
}
public int isLastDays(int year,int month) //返回对应月份的天数
{
if(isRun(year) && month == 2)
return 29;
if(month == 2)
return 28;
if(month == 4 || month == 6 || month == 9 || month == 11)
return 30;
return 31;
}
public boolean isRun(int year) //判断是否为闰年
{
if(year%400 == 0 || (year %4 == 0 && year %100 != 0))
return true;
else
return false;
}
}
TextEx201.java
package nextDate;
import java.util.Scanner;
public class TestEx201 {
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int nowtime[] = new int[3]; //储存现在的时间
System.out.print("请输入现在的时间(年 月 日):");
for(int i = 0; i < 3;i++)
nowtime[i] = input.nextInt(); //读取现在的时间
System.out.print("请输入增加的天数:");
int days = input.nextInt(); //读取要增加的天数
MyDate nowdays = new MyDate(nowtime[0],nowtime[1],nowtime[2]); //实例化对象-现在的时间
MyDate nextdays = nowdays.addDays(days,nowdays); //计算增加天数后的日期
System.out.print("现在时间是:\t\t");
nowdays.print();
System.out.print(days+"天后的时间是:\t");
nextdays.print();
input.close();
}
}
结果测试
请输入现在的时间(年 月 日):2019 10 10
请输入增加的天数:100000
现在时间是: 2019年10月10日
100000天后的时间是: 2293年7月25日
与日期计算器网站上的计算结果一致;