JAVA中計算自然天數


  最近測試給我們反饋了一個bug,說是程序運行天數計算錯誤,應該按照自然天數計算,之前的實現很簡單,如下:

//程序啟動時
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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM