Java 如何使用JOption从对象类在应用程序中输入公历

Java 如何使用JOption从对象类在应用程序中输入公历,java,calendar,Java,Calendar,对象类 public Association(String assoName, String Abbrv, GregorianCalendar formDate, Student president) { this.assoName = assoName; this.abbrv = abbrv; this.formDate = formDate; this.president = president; } 应用程序

对象类

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");
你能帮我做这个节目吗 我不能改变任何事情,因为这是我的项目,而且已经由我的教授设定好了

如何从GregorianCalendar更改为LocalDate和DateTimeFormatter

如果可以,请在关联类中将GregoriaCalendar formDate更改为LocalDate formDate

在任何情况下,用于从用户读取生成日期的one arg JOptionPane.showInputDialog都会返回一个字符串,因此我建议您将其读入字符串变量,例如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);
    }
如果无法更改关联构造函数,请在解析后将LocalDate转换为GregorianCalendar,如下所示:

        ZonedDateTime startOfDay = formDate.atStartOfDay(ZoneId.systemDefault());
        GregorianCalendar formDateGregCal = GregorianCalendar.from(startOfDay);

如果你的意思是你的教授坚持使用设计糟糕、过时很久的GregorianCalendar,更不用说臭名昭著的SimpleDateFormat了,你可能想看看使用现代的、更好的替代品是否合适,尽管如此,请在这里引用我的话。

GregorianCalendar类存在设计问题,现在已经过时很久了。使用现代的LocalDate和DateTimeFormatter,您将更容易获得所需的结果,因此请您自己改用它们,因为应用程序类代码由于错误而无法编译。如果你不能改变任何东西,这是否意味着你不能修复这些错误?@OleV.V。如何从GregorianCalendar更改为LocalDate和DateTimeFormatter?