JAVAで自然日数を計算する

2470 ワード

最近のテストでは、プログラム実行日数計算エラーというバグがフィードバックされました.自然日数で計算すべきです.これまでの実装は簡単でした.以下のようにします.
//     
long start = System.currentTimeMillis();
...
// long end = System.currentTimeMillis(); long days = (end - start) / (1000 * 60 * 60 * 24); return days;

 
テストで問題を提起した後、私たちも計算方法が間違っていると感じて、アルゴリズムを修正して自然日数を計算するつもりで、ネット上で勝手に探して、すべて上の方法で、やはり正直に自分で書いて、以下のようにしましょう:
/**
   *     ————       
   *     :
   * 1,             
   * 2,             ,   (0, 24]            1 ,   2 ,    (24, 48]           2 ,   3 ...           
* */

//     
long start = System.currentTimeMillis();
...
// long end = System.currentTimeMillis(); long days = (end - start) / (1000 * 60 * 60 * 24); // 1 long runningDays = days + 1; // , , +1 long probableEndMillis = start + (1000 * 60 * 60 * 24) * days;
if(new Date(probableEndMillis).getDay() != new Date(end).getDay())
{
  runningDays
++;
}

return runningDays;