------- <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;
}
}