我的程序需要計算工作人員的工資計算用加班時間。爲此,我現在正在做的工作是讓工人的進入時間和時間,然後根據公司的時間表計算出每個工人加班多少小時。我需要將這些時間舍入到最接近的15分鐘,所以我需要一個班級在小時內通過並返回四捨五入的小時數。如何在java中將時間縮短到最接近的15分鐘
例如:
- 如果加班時間是2.17小時,它必須被舍入到2.15。
- 如果加班時間是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