import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class Main {
public static void main(String[] args) {
// 读取输入
String input1 = "2021-02-29";
String input2 = "2021-03-01 2021-02-28";
// 第一行日期字符串是否合法
boolean isValidDate1 = isValidDate(input1);
if (!isValidDate1) {
System.out.println("第一行日期字符串非法");
return;
}
// 解析第一行日期字符串
LocalDate date1 = LocalDate.parse(input1, DateTimeFormatter.ISO_LOCAL_DATE);
// 判断是否为闰年
boolean isLeapYear = date1.isLeapYear();
System.out.println(isLeapYear ? "是闰年" : "不是闰年");
// 第二行日期字符串是否合法
String[] dates = input2.split(" ");
boolean isValidDate2 = isValidDate(dates[0]) && isValidDate(dates[1]);
if (!isValidDate2) {
System.out.println("第二行日期字符串非法");
return;
}
// 解析第二行日期字符串
LocalDate date2 = LocalDate.parse(dates[0], DateTimeFormatter.ISO_LOCAL_DATE);
LocalDate date3 = LocalDate.parse(dates[1], DateTimeFormatter.ISO_LOCAL_DATE);
// 判断结束日期是否早于开始日期
if (date3.isBefore(date2)) {
System.out.println("结束日期早于开始日期");
return;
}
// 计算相差天数、月数、年数
int days = date2.until(date3).getDays();
int months = date2.until(date3).getMonths();
int years = date2.until(date3).getYears();
// 输出相关信息
System.out.println("相差天数:" + days);
System.out.println("相差月数:" + months);
System.out.println("相差年数:" + years);
}
// 判断日期字符串是否合法
public static boolean isValidDate(String date) {
try {
LocalDate.parse(date, DateTimeFormatter.ISO_LOCAL_DATE);
return true;
} catch (DateTimeParseException e) {
return false;
}
}
}