LocalDateTime并比较

时间:2018-02-23 00:20:29

标签: java methods

我正在尝试创建一个返回布尔值的方法,该布尔值将当前月份日和年份与提供的已保存月份日和年份进行比较。这是我的代码,我不确定我做错了什么,但我提供的所有日期都是正确的。我想我已经宣布了一些错误,但我不确定。

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;
}

3 个答案:

答案 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);  
}