私のプログラムでは、給与計算のために労働者の残業時間を計算する必要があります。この目的のために、私が今やっているのは、従業員の起床時間と出勤時間を取得してから、会社の時間スケールで計算して、各従業員の残業時間を取得します。私はこれらの時間を最も近い15分に丸める必要があるので、時間を過ごし、丸められた時間を返す授業が必要です。例えばjavaで最も近い15分に時間を丸める方法
:
- 残業時間の場合は、それが2.15に丸めなければなりません2.17時間です。
- 残業時間が2.24時間の場合、2.30に切り上げる必要があります。
- 残業時間が2.40時間の場合、それは2.45でなければなりません。
残業時間が2.56時間の場合は3時間でなければなりません。
パブリック文字列RoundToNearest15Min(長時間){
long milsec = Time; System.out.println("milsecond :" + milsec); long sec = Time/1000; ValidateValues.roundupDouble(sec); System.out.println("second :" + sec); double min = sec/60; ValidateValues.roundupDouble(min); System.out.println("miniutes :" + min); double hrs = min/60; System.out.println("hours :" + hrs); double roundeVal = ValidateValues.roundupDouble(hrs); String hrsvalue = String.valueOf(roundeVal); System.out.println(hrsvalue); String splitVal[] = hrsvalue.split("\\."); System.out.println(splitVal[0]); System.out.println(splitVal[1]); int splitedValue2 = Integer.parseInt(splitVal[1]); int splitedValue1 = Integer.parseInt(splitVal[0]); if (splitedValue2 <= 15) { int rounded = splitedValue2 > 7 ? (15) : (0); return splitedValue1 + "." + rounded; } if (splitedValue2 > 15 && splitedValue2 <= 30) { int rounded = splitedValue2 > 22 ? (30) : (15); return splitedValue1 + "." + rounded; } if (splitedValue2 > 30 && splitedValue2 <= 45) { int rounded = splitedValue2 > 37 ? (45) : (30); return splitedValue1 + "." + rounded; } if (splitedValue2 > 45 && splitedValue2 <= 59) { int rounded = splitedValue2 > 51 ? (00) : (45); if (rounded == 00) { splitedValue1++; return splitedValue1 + "." + rounded; } else { return splitedValue1 + "." + rounded; } } return "";
}
私はいくつかの計算を使用していますが、それらを練習しませんでした。 – user2576816
ここで使用される「時間インスタンス」とは、「long epoch」、「Date」、「LocalDate」、「Calendar」...丸めは通常モジュロ演算子で行われます。あなたが持っているものを表示して、その部分であなたを助けるために – AxelH
これは今クラスを使用しています。 – user2576816