java - 如何将字符串值转换为其时间值

标签 java

我在数据库中有一个名为出勤的表,并且有一列名为 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/

相关文章:

JAVA - 如何通过比较列表中的多个值来使用比较器对对象列表进行排序

java - "Unresolved compilation problem"是什么意思?

java - Axis2 Soap WS 客户端 : java. lang.NoClassDefFoundError: org/apache/ws/commons/schema/XmlSchema

Java异常: throw back or send as return (function output)?

java - 无法在单独的类中执行事件

java - 为什么在 JAVA 中按位 AND with byte 这样做?

java - 为什么每次刷新页面时 weblogic 都会创建新 session ?

java - DynamoDB 中的 RateLimited 写入

java - Spring Cloud Contracts - 没有为主题设置消费者[...]

java - React setState 不起作用,出现错误