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;
        }
    }
}