如何使用比较运算符比较 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
,其中具有相同长度表示的文本比较就足够了。
模式如下:
- 如果年份不相等则找到结果
- 如果月份不相等则找到结果
- 结果是天数比较
如何使用比较运算符比较 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
,其中具有相同长度表示的文本比较就足够了。
模式如下:
- 如果年份不相等则找到结果
- 如果月份不相等则找到结果
- 结果是天数比较