java.time
DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("MM");
String monthString = monthFormatter.format(Month.of(jMonthChooser2.getMonth() + 1));
Я добавляю 1 к номеру месяца, который я получаю от JMonthChooser
для компенсации, так как подозреваю, что он дает нам номер месяца на основе 0 (от 0 до 11), тогда как я знаю, что перечисление Month
насчитывает месяцы так же, как люди, с 1 по 12. Если вы находите + 1
некрасивым (что это такое), альтернатива:
String monthString = monthFormatter.format(Month.values()[jMonthChooser2.getMonth()]);
Выбирай, что найдешь менее загадочным.
Поскольку SimpleDateFormat
общеизвестно хлопотно и давно устарел, я использую java.time, современный Java-интерфейс даты и времени. С ним гораздо приятнее работать, чем со старыми классами даты и времени.
Отказ от ответственности: я не знаю JMonthChooser
и не проверял свой код в этом классе.
Что пошло не так в вашем коде?
Когда вы вводите число в диапазоне от 0 до 11 в SimpleDateFormat.format
, средство форматирования понимает его как число миллисекунд с эпохи 1 января 1970 года в 00:00 UTC. Поэтому независимо от того, какой месяц вы выбираете, дата и время, которое вы пытаетесь отформатировать, находятся в пределах нескольких миллисекунд от этой даты, поэтому месяц всегда является январским (только в некоторых часовых поясах это все равно было бы в декабре 1969 года).
Ссылки