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

时间:2017-10-07 18:14:16

标签: java date comparison boolean-expression comparison-operators

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

示例:

date1是undefined
 date2是30-10-2017
 date3是31-10-2017

30-10-2018小于date2时,它返回false。如果日期小于另一个日期,我该如何返回true,否则返回false?

这是我的代码:
date3

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

return (day < theDate.day) || (month < theDate.month) || (year < theDate.year);

3 个答案:

答案 0 :(得分:0)

您不能直接使用关系运算符,但日期/时间类型通常会实现Comparable

因此,您应该可以date1.compareTo(date2) < 0执行逻辑date1 < date2

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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. 结果是天的比较