как перейти на LocalDate и DateTimeFormatter с GregorianCalender?
Если вы можете изменить GregorianCalendar formDate
на LocalDate formDate
в классе Association
.
В любом случае одно-аргумент JOptionPane.showInputDialog
, который вы используете для чтения даты формирования от пользователя, возвращает String
, поэтому я предлагаю вам прочитать его в переменную String
, скажем, formationDateString
, а затем выполнить синтаксический анализэто в LocalDate
.Что-то вроде:
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("d/M/u");
String formationDateString = JOptionPane.showInputDialog("Association Formation Date (dd/mm/yyyy) ");
try {
LocalDate formDate = LocalDate.parse(formationDateString, dateFormatter);
} catch (DateTimeParseException dtpe) {
JOptionPane.showMessageDialog(null, "Invalid date format",
"id frn’s app", JOptionPane.ERROR_MESSAGE);
}
Если вы не можете изменить конструктор Association
, преобразуйте ваш LocalDate
в GregorianCalendar
следующим образом после разбора:
ZonedDateTime startOfDay = formDate.atStartOfDay(ZoneId.systemDefault());
GregorianCalendar formDateGregCal = GregorianCalendar.from(startOfDay);
Если то, что вы говоритев том, что ваш профессор настаивает на использовании плохо спроектированной и давно устаревшей GregorianCalendar
(не говоря уже о печально известной SimpleDateFormat
), вы можете проверить, можно ли использовать современную и намного лучшую альтернативу (и не стесняйтесьпроцитируй меня здесь).