Как ввести григорианский календарь в приложении из класса объектов с помощью JOption - PullRequest
0 голосов
/ 04 декабря 2018

Класс объекта

public Association(String assoName, String Abbrv, GregorianCalendar formDate, Student president)
    {
        this.assoName = assoName;
        this.abbrv = abbrv;
        this.formDate = formDate;
        this.president = president;
    }

Класс приложения

String assoName = JOptionPane.showInputDialog("Association Name: ");
pw.println(assoName);
String abbrv = JOptionPane.showInputDialog("Association's Abbreviation");
pw.print(","+abbrv);
GregorianCalendar formDate = JOptionPane.showInputDialog("Association Formation Date (dd/mm/yyyy) ");
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy");

Можете ли вы помочь мне с программой T_T Я не могу ничего изменить, поскольку это для моего проекта, и это уже установлено моим профессором.

1 Ответ

0 голосов
/ 04 декабря 2018

как перейти на 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), вы можете проверить, можно ли использовать современную и намного лучшую альтернативу (и не стесняйтесьпроцитируй меня здесь).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...