题目
给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。请你计算并返回该日期是当年的第几天。
通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。
示例
-
示例一
输入: date = “2019-01-09”
输出:9 -
示例二
输入:date = “2019-02-10”
输出:41 -
示例三
输入:date = “2003-03-01”
输出:60 -
示例四
输入:date = “2004-03-01”
输出:61
方法
直接计算
class Solution {
public int dayOfYear(String date) {
String[] time = date.split("-");
String year = time[0];
String month = time[1];
String day = time[2];
int ans = 0;
int[] month_days;
if((Integer.valueOf(year) % 4 == 0 && Integer.valueOf(year) % 100 != 0) || (Integer.valueOf(year) % 400 == 0) ){
month_days = new int[]{31,29,31,30,31,30,31,31,30,31,30,31};
}else{
month_days = new int[]{31,28,31,30,31,30,31,31,30,31,30,31};
}
for(int i=1;i<Integer.valueOf(month);i++){
ans += month_days[i-1];
}
ans += Integer.valueOf(day);
return ans;
}
}
- 先将日期按照 - 拆分为年月日。
- 判断是否时闰年,并将每个月的天数提前存放到数组中。
- 根据月份,将日期之前的总天数计算出,然后加上当前月份已经度过的天数。