我正在尝试创建一个返回布尔值的方法,该布尔值将当前月份日和年份与提供的已保存月份日和年份进行比较。这是我的代码,我不确定我做错了什么,但我提供的所有日期都是正确的。我想我已经宣布了一些错误,但我不确定。
public boolean isExpired(){
boolean expired = true;
LocalDateTime today = LocalDateTime.now();
int month = today.getMonthValue();
int year = today.getYear();
int day = today.getDayOfMonth();
if((this.expYear <= year) && (this.expMonth <= month) && (this.expDay <= day))
{
expired = false;
}
return expired;
}
答案 0 :(得分:1)
使用LocalDate
从您的到期日期创建expDate
对象LocalDate.of(...)
,您可以在班级的构造函数中执行此操作。
private LocalDate expDate;
MyClass(int expYear, int expMonth, int expDay) {
expDate = LocalDate.of(expYear, expMonth, expDay);
无需单独记住字段expYear,expMonth和expDay,因为您始终可以从expDate
中检索它们。
您的isExpired方法变为:
return !LocalDate.now().isBefore(expDate);
答案 1 :(得分:0)
public boolean isExpired(){
boolean expired = false;
LocalDateTime today = LocalDateTime.now();
int month = today.getMonthValue();
int year = today.getYear();
int day = today.getDayOfMonth();
if((this.expYear < year) || (this.expYear == year && this.expMonth < month) || (this.expYear == year && this.expMonth == month && this.expDay <= day))
{
expired = true;
}
return expired;
}
下面!我已经为你重新编写了代码,现在它可以正常工作。
说明:
答案 2 :(得分:0)
像这样改变isExpired()方法的逻辑
public boolean isExpired() {
LocalDate expiredDate = LocalDate.of(expYear, expMonth, expDay);
return LocalDate.now().isBefore(expiredDate);
}