『壹』 java 時間(Date)相減為何出現負數
你的問題其實跟日期沒關系,你的問題其實可以描述為下面這樣:
long diff = 2160000000;
int result = (int)(diff)/1000/60/60/24;
System.out.println(result);
為什麼經過計算後result結果為負數,原因是因為在java語言中int類型的取值范圍是:-2147483648~2147483647,而你給的long型的diff超出了2147483647的最大值,導致最高位符號位變成了1,於是經過強制類型轉換(int)(diff)之後,已經就是一個負數了,所以除法運算的結果也就成了負數。而當diff等於2073600000的時候,這個值並沒有超出int類型的范圍,所以計算出的結果是正數