5、设int year,month,day分别表示一个日期中的年月日,试编程求 a) 对于任意三个整数,判断其是否为一个合法的日期值。 b) 给定一个日期值,计算若干天后的日期值 c) 如果有两个日期值,计算他们相距的天数。
时间: 2024-02-12 19:07:17 浏览: 61
好的,以下是对应的Java代码实现:
a) 判断日期是否合法:
```java
public static boolean isLegalDate(int year, int month, int day) {
if (year < 1 || month < 1 || month > 12 || day < 1) {
return false;
}
int daysInMonth;
switch (month) {
case 2:
if (isLeapYear(year)) {
daysInMonth = 29;
} else {
daysInMonth = 28;
}
break;
case 4:
case 6:
case 9:
case 11:
daysInMonth = 30;
break;
default:
daysInMonth = 31;
break;
}
return day <= daysInMonth;
}
public static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
```
b) 计算若干天后的日期值:
```java
public static String calculateDateAfterDays(int year, int month, int day, int days) {
LocalDate date = LocalDate.of(year, month, day);
date = date.plusDays(days);
return date.toString();
}
```
c) 计算两个日期值相距的天数:
```java
public static long daysBetween(int year1, int month1, int day1, int year2, int month2, int day2) {
LocalDate date1 = LocalDate.of(year1, month1, day1);
LocalDate date2 = LocalDate.of(year2, month2, day2);
return ChronoUnit.DAYS.between(date1, date2);
}
```
以上代码分别实现了对任意三个整数判断其是否为一个合法的日期值、给定一个日期值计算若干天后的日期值、如果有两个日期值,计算他们相距的天数。
阅读全文