我有一个项目,其中我的方法获得两个日期,并且一直向该方法添加一天,直到两个日期相等为止,然后您可以通过查看一天被添加了多少次来了解日期的间隔。我的问题是,即使满足日,月和年的所有条件,我的while循环也会在满足白天条件时退出,以使其停止工作
while (pastDate.getDay() != futureDate.getDay() &&
pastDate.getMonth() != futureDate.getMonth() &&
pastDate.getYear() != futureDate.getYear()){
答案 0 :(得分:3)
您需要OR
一起while
循环中的条件:
while (pastDate.getDay() != futureDate.getDay() ||
pastDate.getMonth() != futureDate.getMonth() ||
pastDate.getYear() != futureDate.getYear()) {
// do something
}
在伪代码中,当两个日期相等时,循环的逻辑将是:
while (day1 == day2 && month1 == month2 && year1 == year2) {
// ...
}
根据德摩根定律,P AND Q
的反义词是~P OR ~Q
,当日期为 not时,这将导致以下while
循环(再次使用伪代码) 等于:
while (day1 != day2 || month1 != month2 || year1 != year2) {
// ...
}
答案 1 :(得分:2)
使用.equals()
:
while (!pastDate.equals(futureDate)) {
//
}
它不仅更具可读性,而且还准确地保留了日期与实现相同的日期,这正是OOP最佳实践所说的日期。