我正在尝试写一些东西,让某人可以将有声读物上课,并且应该将到期日定为14天。我的班级有一个toString()方法,该方法应打印出到期日,但无论如何始终打印出到期日是3/5。
public String toString() // Prints specs of a Book object { String str = "\nThe specs of this audiobook are: "; str += "\n\t Title: " + title; str += "\n\t Narrator: " + narrator; str += "\n\t Year: " + year; str += "\n\t Due Date: " + (getReturnDate().MONTH + 1) + "/" + getReturnDate().DATE; return str; } public Calendar getReturnDate() // Makes return date 14 days after today { Calendar duedate = Calendar.getInstance(); duedate.add(Calendar.DAY_OF_YEAR, 14); return duedate; }
getReturnDate().MONTH
没有按照你的意思去做。它的值是Calendar.MONTH静态常量的值,我想是2(实际上,您可以在源代码中看到它)。
Calendar.MONTH
我想你是说
getReturnDate().get(Calendar.MONTH)
此外,您不应该拨打getReturnDate()两次电话:如果您拨打两次电话,日期可能会不一致。调用一次,将其分配给一个字段:
getReturnDate()
Calendar returnDate = getReturnDate(); // ... str += "Due date " + (returnDate.get(Calendar.MONTH) + 1) + "/" + returnDate.get(Calendar.DATE);
但实际上,更好的解决方案是不使用这些旧的,有效弃用的API。
使用LocalDate:
LocalDate
LocalDate returnDate = LocalDate.now().plusDays(14);
然后访问returnDate.getMonthValue()和returnDate.getDayOfMonth()字段。
returnDate.getMonthValue()
returnDate.getDayOfMonth()