介绍:我有一个在Android做长时间比较的方法。基本上,我比较日期(时间戳/时代)。其中一个比较检查日期是否相等“if(a2 == a1 & & b2 == b1)”。Java长期比较
问题问题是,即使这些数字相同,“if”也不起作用。我还附上了调试屏幕的屏幕截图以及在示例中进行比较的值。
问题:你知道为什么条件不起作用吗?我无法确定,因为这只是数学应该工作。也许有一个我没有看到的投射问题?所有其他情况下,“如果”的作品。
方法:
public ArrayList<Integer> getConflicts(ArrayList<AssetBooking> assetBookings) {
Epoch epoch = new Epoch();
ArrayList<Integer> conflicts = new ArrayList<>();
for (AssetBooking aB : assetBookings) {
Long a1 = aB.getFromDatetime()/1000;
Long b1 = aB.getToDatetime()/1000;
Long a2 = epoch.getEpochNoSeconds(fromDatetime);
Long b2 = epoch.getEpochNoSeconds(toDatetime);
if (a2 == a1 && b2 == b1) {
System.out.println("equals");
}
if ((a2 < a1 && b2 >= a1) || (a2 == a1) || (a2 > a1 && b2 < b1) || (a2 > a1 && a2 < b1) || (a2 == a1 && b2 == b1)) {
conflicts.add(assetBookings.indexOf(aB));
}
}
return conflicts;
}
尝试原始类型的“长”,而不是“长”,这是一个包装类。 –