我在数据库中有一个名为出勤的表,并且有一列名为 noOfHours。它是一个字符串,其中有一列称为月份。我需要计算给定月份的总小时数,那么如何完成该任务?
示例:如果一名员工在 8 月份工作了 5 小时 45 分钟,那么另一天他工作了 4 小时 30 分钟,则总小时数应为 10 小时 15 分钟。我怎样才能完成这个任务?在我的出勤数据库表中,在 noOfHours 列中,这些值存储为“5h 45min”,所以请告诉我一种方法来执行此操作。
最佳答案
你正在做不必要的工作。将列类型更改为时间
。
但是回答你的问题,你可以将字符串转换为 Date
类型:
DateFormat dateFormat = new SimpleDateFormat("HH'h' mm'min'");
Date yourDate = dateFormat.parse(string);
要使其再次成为字符串,只需将 dateFormar.format(yourDate)
要对两个日期求和,您必须注意 Date
对象还包含日期信息,因此您必须仅使用小时和分钟信息。您可以使用 Calendar
类来完成此操作。
Calendar c1 = Calendar.getInstance(), c2 = Calendar.getInstance(), sum = Calendar.getInstance();
c1.setTime(yourDate);
c2.setTime(anotherDate);
sum.setTimeInMillis(0L);
sum.add(Calendar.HOUR_OF_DAY, c1.get(Calendar.HOUR_OF_DAY));
sum.add(Calendar.HOUR_OF_DAY, c2.get(Calendar.HOUR_OF_DAY));
sum.add(Calendar.MINUTE, c1.get(Calendar.MINUTE));
sum.add(Calendar.MINUTE, c2.get(Calendar.MINUTE));
现在您有了 sum
对象,其中包含您(两天)的总工作小时数和分钟数。
不要忘记,您的时间可能超过 24 小时,因此您必须将 sum
中包含的天数乘以 24。
Integer numHours = sum.get(Calendar.DAY_OF_MONTH) * 24 + sum.get(Calendar.HOUR_OF_DAY);
Integer numMinutes = sum.get(Calendar.MINUTE);
String ret = numHours.toString() + "h " + numMinutes.toString() + "min";
关于java - 如何将字符串值转换为其时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32502339/