輸入某年某月某日,判斷這一天是一年的第幾天 的三種方式
阿新 • • 發佈:2019-02-08
輸入某年某月某日,判斷這一天是一年的第幾天
package arithmetic;
import java.util.Calendar;
/**
* 輸入某年某月某日,判斷這一天是一年的第幾天?
*
* @author sunRainAmazing
*
*/
public class GetDayOfYear {
public static void main(String[] args) {
getDay_switchCase(2017,1,10);
getDay_switchCase(2017,3,10);
getDay_array(2017 ,1,10);
getDay_array(2016,3,10);
getDay_Calendar(2016,1,10);
getDay_Calendar(2017,3,10);
}
/**
* 求輸入相應的年月日,輸出對應的多少天
* 採用switch case形式
* @param year 年
* @param month 月
* @param day 日
*/
public static void getDay_switchCase(int year,int month,int day){
//1、定義相關的變數
int sumDays=0;//對應的總天數
//2、判斷是否為閏年並且月份大於2 若是總天數多一天
if((year%4==0&&year%100!=0||year%400==0)&&month>2){
sumDays=1;//將閏年的二月份多出的一天加上
}
//3、加上之前幾個月的天數
for(int i=1;i<month;i++){
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
// case 12:
sumDays+=31;
break;
case 4:
case 6:
case 9:
case 11:
sumDays+=30;
break;
case 2:sumDays+=28;
}
}
//4、加上當月對應的天數
sumDays+=day;
System.out.println(year+"年"
+month+"月"
+day+"日是今年的第 "
+sumDays+" 天!");
}
/**
* 求輸入相應的年月日,輸出對應的多少天
* 採用陣列的形式
* @param year 年
* @param month 月
* @param day 日
*/
public static void getDay_array(int year,int month,int day){
//1、定義相關的變數
int sumDays=0;//對應的總天數
int[] monthDay={0,31,28,31,30,31,30,31,31,30,31,30};//對應月份的天數
//2、判斷是否為閏年並且月份大於2 若是2月份為29天
if((year%4==0&&year%100!=0||year%400==0)&&month>2){
monthDay[2]=29;//將閏年的二月份多出的一天加上
}
//3、根據月份計算天數
for (int i = 0; i < month; i++) {
sumDays+=monthDay[i];
}
//4、加上當月對應的天數
sumDays+=day;
System.out.println(year+"年"
+month+"月"
+day+"日是今年的第 "
+sumDays+" 天!");
}
/**
* 求輸入相應的年月日,輸出對應的多少天
* 採用日期類的 Calendar形式
* @param year 年
* @param month 月
* @param date ---day 日
*/
public static void getDay_Calendar(int year,int month,int date){
//1、建立例項
Calendar calendar = Calendar.getInstance();
//設定時間 month月 對應的 0-11
calendar.set(year, month-1, date);
//3、得到對應的第幾天
int sumDays=calendar.get(Calendar.DAY_OF_YEAR);
System.out.println(year+"年"
+month+"月"
+date+"日是今年的第 "
+sumDays+" 天!");
}
}