2023-12-31
1.根据所给的字符串,分别截取出年月日的信息,转化成整数
2.根据当前年份,判断是否为闰年,是闰年:二月加1
3.之前月份天数之和,最后加上天数的信息
public int dayOfYear(String date) {
int year = Integer.parseInt(date.substring(0, 4));
int month = Integer.parseInt(date.substring(5, 7));
int day = Integer.parseInt(date.substring(8));
//调用substring分别截取出年月日的信息,转化为整数
int[] monthes = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
//每个月份的天数
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
++monthes[1];
}//如果当前的闰年,二月加1天(直接改变月份字典中的数)
int ans = 0;
for (int i = 0; i < month - 1; ++i) {
ans += monthes[i];//每个月天数之和
}
return ans + day;
}
1.指定日期字符串的格式
2.解析为 LocalDate 对象
3.返回该日期在其所属年份中的天数
private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
//定义了一个 DateTimeFormatter 对象,它指定了日期字符串的格式为 "yyyy-MM-dd"
public int dayOfYear2(String date) {
return LocalDate.parse(date, formatter).getDayOfYear();
//LocalDate.parse() 方法将日期字符串解析为 LocalDate 对象
//getDayOfYear() 方法则返回该日期在其所属年份中的天数
}