2010-01-21 4 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 [] 날짜 시간 객체의 두 배열입니다.

제안 사항?

답변

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

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); 

합니다.

관련 문제