作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在数据库中有一个名为出勤的表,并且有一列名为 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/
我是一名优秀的程序员,十分优秀!