介紹:我有一個在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;
}
嘗試原始類型的「長」,而不是「長」,這是一個包裝類。 –