如何使用比较运算符比较 Java 中的日期?

How to compare dates in Java using comparison operators?

如何使用比较运算符比较 Java 中的日期?

示例:

日期 1 是 30-10-2017
date2 是 31-10-2017
date3 是 30-10-2018

date2 return 小于 date3 应该为真时为假。如果日期小于另一个日期,我如何 return 为真,否则为假?

这是我的代码:
return (day < theDate.day) || (month < theDate.month) || (year < theDate.year);

以下是我目前的解决方案:

{
  boolean check = false;
  if(year < theDate.year)
  {
      return true;
  }
  if(year > theDate.year)
  {
      return false;
  }
  if(month < theDate.month)
  {
      check = true;
  }
  if(day < theDate.day)
  {
      check = true;
  }
  else
  {
      return false;
  }
  return check;
}

您不能直接使用关系运算符,但 date/time 类型通常会实现 Comparable.

所以你应该能够 date1.compareTo(date2) < 0 逻辑 date1 < date2

您应该为此使用 boolean after(Date date)boolean before(Date date)。 例如,date2.before(date3)

LocalDate date1 = LocalDate.of(2017, 10, 30); // Year, month, day.
LocalDate date2 = LocalDate.of(2017, 10, 31);
LocalDate date3 = LocalDate.of(2018, 10, 30);

System.out.printf("%s before %s? %s%n", date1, date2, date1.isBefore(date2));
System.out.printf("%s before %s? %s%n", date2, date3, date3.isBefore(date3));
System.out.printf("%s before %s? %s%n", date3, date1, date3.isBefore(date1));

如果您想知道如何自己进行比较:

  • 比较第一年,然后是月份,然后是日期:从最重要最不重要
  • 因此,表示日期(和时间)的 ISO 标准是 2017-09-30T13:05:01,000,其中具有相同长度表示的文本比较就足够了。

模式如下:

  1. 如果年份不相等则找到结果
  2. 如果月份不相等则找到结果
  3. 结果是天数比较