能根据这条代码assertEquals("9999-12-31", NextDay.nextDay("9999-12-30")); 写出调用的NextDay源代码么
时间: 2023-07-19 21:10:03 浏览: 65
可以的,这里是一个可能的 NextDay 类的源代码实现:
```java
public class NextDay {
public static String nextDay(String date) {
String[] parts = date.split("-");
int year = Integer.parseInt(parts[0]);
int month = Integer.parseInt(parts[1]);
int day = Integer.parseInt(parts[2]);
int daysInMonth = daysInMonth(month, year);
if (day < daysInMonth) {
day++;
} else {
day = 1;
if (month == 12) {
month = 1;
year++;
} else {
month++;
}
}
return String.format("%04d-%02d-%02d", year, month, day);
}
private static int daysInMonth(int month, int year) {
switch (month) {
case 2:
return isLeapYear(year) ? 29 : 28;
case 4:
case 6:
case 9:
case 11:
return 30;
default:
return 31;
}
}
private static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
}
```
这个类中的 `nextDay` 方法接收一个日期字符串,例如 "9999-12-30",并返回一个字符串,表示该日期的下一天。这个方法首先将传入的字符串解析为年、月、日三个部分,然后使用 `daysInMonth` 方法计算当月有多少天,从而判断日期是否应该增加一天。如果日期应该增加一天,则进行相应的计算,否则将日期设置为 1,并将月份加一。如果月份是 12,则将年份加一并将月份设置为 1。最后,使用 `String.format` 方法将年、月、日三个部分格式化为一个字符串并返回。
阅读全文