Java实现输入一个日期,计算增加n天后的日期

这个思路挺巧妙的

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日

日期计算器网站上的计算结果一致;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值