Easy
Given a string date
representing a Gregorian calendar date formatted as YYYY-MM-DD
, return the day number of the year.
Example 1:
Input: date = “2019-01-09”
Output: 9
Explanation: Given date is the 9th day of the year in 2019.
Example 2:
Input: date = “2019-02-10”
Output: 41
Constraints:
date.length == 10
date[4] == date[7] == '-'
, and all other date[i]
’s are digitsdate
represents a calendar date between Jan 1st, 1900 and Dec 31th, 2019.public class Solution {
public int dayOfYear(String date) {
int[] monthDays = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
String[] dateArr = date.split("-");
int year = Integer.parseInt(dateArr[0]);
int month = Integer.parseInt(dateArr[1]);
int day = Integer.parseInt(dateArr[2]);
int dayCount = 0;
boolean leapYear = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
for (int i = 1; i < month; i++) {
dayCount += monthDays[i];
}
dayCount += day;
if (leapYear && month > 2) {
dayCount++;
}
return dayCount;
}
}