例:
输入2019 10 11
得出是 2019年10月11日是2019年的第284天
import java.util.Scanner;
public class YearMonthDay {
public static void main(String[] args) {
//输入年月日
Scanner sc = new Scanner(System.in);
System.out.println("请输入年月日");
int year = sc.nextInt();
int month = sc.nextInt();
int day = sc.nextInt();
//计算日期是这年的第几天
int sumdays = getSumDay(year, month, day);
//打印该日期对应这一年是第几天
System.out.println(year + "年" + month + "月" + day + "日,是" + year + "年的第" + sumdays + "天");
}
//计算日期是这年的第几天,例 2019 10 11
private static int getSumDay(int year, int month, int day) {
int dayss = 0;//保存这个日期对应这一年的总天数
//将[1,month)之间的整月进行累加,即把1-9月整月的天数进行累加
for(int m = 1; m < month;m++) {
dayss += getMonthDay(year, m);
}
dayss += day;
return dayss;
}
private static int getMonthDay(int year, int month) {
switch (month) {
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 :
return 31;
case 4 :
case 6 :
case 9 :
case 11 :
return 30;
case 2 :
//判断是否是闰年,闰年29天,不是闰年28天
if(leapYear(year)) {
return 29;
}else {
return 28;
}
}
return 0;
}
//判断是否是闰年
private static boolean leapYear(int year) {
if(year % 4 == 0 && year % 100 != 0 || year % 400 ==0) {
return true;
}else{
return false;
}
}
}