黑马程序员-计算从你出生到今天为止的总天数?

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

标题要是改成“计算一下你来到这个世界多少天?”,恐怕很多人计算出来后会很吃惊原来自己来到这世上也只是白驹过隙、昙花一谢。

呵呵!  不多说直接看代码!!

/**
 * 需求:算一下你来到这个世界多少天?
 *      四年一闰,百年不闰,四百年再闰
 * 分析:
 * 		根据你输入的的生日日期和获取当前时间日期计算天数
 *      分段处理:
 *      1.出生日期到当年年底的总天数
 *      2.出生当年的下一年到今年的前一年的总天数
 *      3.今年年初到现在日期的总天数
 * 
 * @author Administrator
 *
 */
public class Test9 {
	public static void main(String[] args) {
		//输入出生年月日
		System.out.println("请输入出生的年份:");
		Scanner scanner=new Scanner(System.in);
		int year = scanner.nextInt();
		System.out.println("请输入你出生的月份:");
		int mouth = scanner.nextInt();
		System.out.println("请输入你出生的日期:");
		int day = scanner.nextInt();
		System.out.println("你出生的年月日:"+year+"-"+mouth+"-"+day);
		//获取当前时间
		int num=0;//用来统计天数
		//计算从你出生那年到那年年终有多少天
		//计算出生当月还剩多少天
		switch (mouth) {
		case 1:
			num=31-day;
			break;
		case 3:
			num=31-day;
			break;
		case 5:
			num=31-day;
			break;
		case 7:
			num=31-day;
			break;
		case 8:
			num=31-day;
			break;
		case 10:
			num=31-day;
			break;
		case 11:
			num=31-day;
			break;
		case 4:
			num=30-day;
			break;
		case 6:
			num=30-day;
			break;
		case 9:
			num=30-day;
			break;
		case 12:
			num=30-day;
			break;
		case 2:
			if(year%4==0 && year%100!=0 || year%400==0){
				num=29-day;
			}else{
				num=28-day;
			}
			break;
		default:
			break;
		}
		//计算出生当月到哪年年底还剩多少天
		for(int i=mouth+1;i<=12;i++){
			//判断出生年是否是闰年:四年一闰,百年不闰,四百年再闰
				num = getToatalDayByMouth(year, i, num);
			}
		//得到当前时间的年月日的int类型数据
		Date date=new Date();
		SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
		String string = simpleDateFormat.format(date);
		String cyear = string.substring(0, 4);
		String cmouth=string.substring(6, 7);
		String cday = string.substring(8, string.length());
		int year0 = Integer.parseInt(cyear);
		int mouth0 = Integer.parseInt(cmouth);
		int day0 = Integer.parseInt(cday);
		System.out.println(year0);
		System.out.println(mouth0);
		System.out.println(day0);
		//计算出生下一年到至今年初有多少天
		for(int i=year+1;i<year0;i++){
			//判断该年是不是闰年   四年一闰,百年不闰,四百年再闰
			if(i%4==0&&i%100!=0||i%400==0){
				num+=366;
			}else{
				num+=365;
			}
		}
		//计算今年年初到上个月底多少天
		for(int i=1;i<mouth0;i++){
			//判断出生年是否是闰年:四年一闰,百年不闰,四百年再闰
		  num= getToatalDayByMouth(year0, i, num);
		}
		num+=day0;
		
		System.out.println(num);
		
	}
		//通过获取的月份得到总天数
	private static int getToatalDayByMouth(int year, int mouth, int num) {
		switch (mouth) {
		case 1:
			num+=31;
			break;
		case 3:
			num+=31;
			break;
		case 5:
			num+=31;
			break;
		case 7:
			num+=31;
			break;
		case 8:
			num+=31;
			break;
		case 10:
			num+=31;
			break;
		case 11:
			num+=31;
			break;
		case 4:
			num+=30;
			break;
		case 6:
			num+=30;
			break;
		case 9:
			num+=30;
			break;
		case 12:
			num+=30;
			break;
		case 2:
			if(year%4==0 && year%100!=0 || year%400==0){
				num+=29;
			}else{
				num+=28;
			}
			break;
		default:
			break;
		}
		return num;
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章