对象类
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我不能改变任何东西,因为它是我的项目,它已经由我的教授设定。
如何从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
),你可能想要检查是否可以使用现代且更好的替代方案(并且感觉到)我在这里免费引用我)。