如何使用JOption从Object Class在应用程序上输入Gregorian Calendar

问题描述 投票:0回答:1

对象类

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我不能改变任何东西,因为它是我的项目,它已经由我的教授设定。

java calendar
1个回答
1
投票

如何从Gregorian Calendar更改为LocalDate和DateTimeFormatter?

如果可以,请将GregorianCalendar formDate更改为LocalDate formDate类中的Association

在任何情况下,你用来从用户读取形成日期的one-arg 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),你可能想要检查是否可以使用现代且更好的替代方案(并且感觉到)我在这里免费引用我)。

© www.soinside.com 2019 - 2024. All rights reserved.