题目描述:
给你一个按 YYYY-MM-DD 格式表示日期的字符串 date,请你计算并返回该日期是当年的第几天。
通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。
示例 1:
输入:date = "2019-01-09"
输出:9
解题思路:
四年一闰,百年不闰,四百年再闰
闰年2月有 29 天
平年2月有 28 天
参考答案:
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请按如下格式输入日期:2020-6-1:");//153天
String s = scanner.next();
System.out.println("输入的日期为:" + s);
System.out.print("这一天是一年中的第 ");
System.out.println(new test().dayOfYear(s) + " 天");
}
public int dayOfYear(String date) {
int year = Integer.parseInt(date.substring(0,4));
int month = Integer.parseInt(date.substring(5,6));
int day = Integer.parseInt(date.substring(7));
// System.out.println(year+" "+ month+" "+ day); 测试有没有正确截取
int[] monthArray = {31,28,31,30,31,30,31,31,30,31,30,31};
if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
monthArray[1] = 29;
}
int sum = 0;
for (int i = 0; i < month - 1; i++) {
sum += monthArray[i];
}
sum += day;
return sum;
}
}