0

現在、1日の開始時刻と終了時刻を取り、2つの差を計算して、1日の労働時間を計算できる関数があります。私がやりたいことは、表示形式 (HH:mm) を維持しながら、7 日間の作業時間を取得し、総計を返すことができるようにすることです。

1日の合計に対する私の関数:

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 オブジェクトの配列です。

助言がありますか?

4

3 に答える 3

1

別の簡単な解決策:

これは、時間と分を別々に受け取るメソッドです。
パラメータは次のとおりです。

  • スタートアワー
  • 開始議事録
  • 終了時間
  • 終了議事録

まず、時間と分の差を別々に計算します。

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

次に、「minutes」変数の値が負であるかどうかを検証します。

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

それで全部です。

于 2011-05-26T19:43:52.170 に答える
1

1 週間分の日数を保持し、毎日 1 回関数を呼び出す必要があります。

ただし、これは、電卓メソッドが文字列としてフォーマットされず、代わりに数値を返すようにリファクタリングする必要があることを意味します。これにより、それらを簡単に加算できるようになります。

于 2010-01-21T19:35:07.857 に答える
0

興味のある人のために私が終わらせた解決策

    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);
于 2010-06-14T17:36:15.887 に答える