2010-01-21 61 views
0

目前我有一個函數可以計算一天的開始時間和結束時間,並計算兩者之間的差異,給我一天的工作時間。我想要做的是能夠獲得7天的工作時間,並返回總計,同時保持顯示格式(HH:mm)。JodaTime計算在一週內工作的總小時數

我給功能的單一的一天的總:

Period p = new Period(this.startTime[dayIndex], this.endTime[dayIndex]); 
long hours = p.getHours(); 
long minutes = p.getMinutes(); 

String format = String.format("%%0%dd", 2);//Ensures that the minutes will always display as two digits. 

return Long.toString(hours)+":"+String.format(format, minutes); 

this.startTime [] & this.endTime []是datetime對象的兩個陣列。

有什麼建議嗎?

回答

0

溶液I與結束對於那些有興趣

Period[] p=new Period[7]; 
    long hours = 0; 
    long minutes =0; 
    for(int x=0; x<=this.daysEntered;x++) 
    { 
     p[x] = new Period(this.startTime[x], this.endTime[x]); 
     hours += p[x].getHours(); 
     minutes += p[x].getMinutes(); 
    } 

    hours += minutes/60; 
    minutes=minutes%60; 

    String format = String.format("%%0%dd", 2); 

    return Long.toString(hours)+":"+String.format(format, minutes); 
+1

'format'可以替換爲'「%02d」'。 – BalusC 2010-06-14 17:40:02

1

你需要一些東西來保存一週的時間,每天給你的功能打一次電話。

但是這意味着您需要重構,以便您的計算器方法不會格式化爲字符串,而是返回一個數值,因此您可以輕鬆地將它們添加到一起。

1

另一種簡單的解決方案:

這裏是接收分開小時和分鐘的方法。
的參數是:

  • 起始小時
  • 開始分鐘
  • 結束小時
  • 結束分鐘

第一,計算小時和分鐘分開的區別:

int hours = pEndHour - pStartHour; 
int minutes = ((60 - pStartMinutes) + pEndMinutes) - 60; 

然後,如果驗證「分鐘」變量的值是負的:

// If so, the "negative" value of minutes is our remnant to the next hour 
if (minutes < 0) { 
    hours--; 
    minutes = 60 + minutes ; 
} 

最後,你可以打印小時制的時間段:

String format = String.format("%%0%dd", 2); 
System.out.println("*** " + hours + " : " + minutes); 

這就是全部。