Месяцы идут от 0 до 11, если мы задаем 12 месяц, то getMonth меняет его на 0, но увеличивает год на 1, если задаем 24, то на 2 соответственно. И я уже голову сломал как откорректировать месяц в этой задаче не затрагивая год!
package com.javarush.task.pro.task16.task1602;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/*
Подчищаем хвосты
*/
public class Solution {
public static void main(String[] args) {
List<Date> dateList = new ArrayList<>();
dateList.add(new Date(2015, 12, 25, 20, 40));
dateList.add(new Date("July 20, 1969"));
dateList.add(new Date(1989, 11, 9));
dateList.add(new Date("January 1, 2000"));
System.out.println("before fixes:");
dateList.forEach(System.out::println);
fixDate(dateList);
System.out.println("after fixes:");
dateList.forEach(System.out::println);
}
static void fixDate(List<Date> brokenDates) {
Date currentDate = new Date();
for (int i = 0; i < brokenDates.size(); i++) {
if (brokenDates.get(i).after(currentDate)) {
if (brokenDates.get(i).getMonth() < 11) {
// нужна подсказка!
int brokenMonth = brokenDates.get(i).getMonth();
int correctMonth = brokenMonth - 1;
brokenDates.get(i).setMonth(correctMonth);
}
if (brokenDates.get(i).getYear() > 121) {
int brokenYear = brokenDates.get(i).getYear();
int correctYear = brokenYear - 1900;
brokenDates.get(i).setYear(correctYear);
}
}
}
}
}