Я пытаюсь получить дату начала и окончания в Java, у меня есть список месяцев с января по декабрь в JCombobox
и год JCombobox
для отображения лет.
Сначала я преобразовал String
месяц в номер месяца и использовал этот код:
if(month_sands.getSelectedIndex() != -1){
int monthnumber = month_sands.getSelectedIndex() + 1;
if(monthnumber>=9)
{
month=String.valueOf(monthnumber);
}else
{
month="0"+String.valueOf(monthnumber);
}
}
Затем позже я создал строку dateString
, чтобы получить первую и последнюю дату выбранного месяца, используя LocalDate
, все работает нормально, но когда я выбираю февральский месяц и 2017 год, это дает мне исключение java.time.DateTimeException: Invalid date 'February 29' as '2017' is not a leap year
Код для получения первой и последней даты
try {
String dateString = year_sands.getSelectedItem().toString()+"-"+month+"-"+"01";
DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.US);
LocalDate date = LocalDate.parse(dateString, dateFormat);
LocalDate startDate=date.withDayOfMonth(1);
LocalDate endDate = date.withDayOfMonth(date.getMonth().maxLength());
start_date=startDate.toString();
end_date=endDate.toString();
System.out.println(start_date);
System.out.println(end_date);
} catch (Exception e) {
e.printStackTrace();
}
Я не знаю, что я делаю неправильно, пожалуйста, помогите мне кто-нибудь