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;