1

我有一个 Time 对象的 ResultSet,它们是两次之间的差异。它们在分钟到秒的范围内,例如“00:01:12”或“00:00:22”

如何将这些 java.sql.time 值加在一起成为时间的总和?

谢谢!

4

2 回答 2

2
public Date sumDates(String[] dateStrings, DateFormat df) {
    int secs=0, mins=0, hrs=0;
    Calendar calendar = Calendar.getInstance();
    for (int i=0; i<dateStrings.length; i++) {
        String dateString = dateStrings[i];
        Date date = (Date) df.parse(dateString);
        calendar.setTime(date);
        secs += calendar.get(Calendar.SECOND);
        mins += calendar.get(Calendar.MINUTE);
        hrs += calendar.get(Calendar.HOUR);
    }
    calendar.set(0, 0, 0, hrs, mins, secs);
    return calendar.getTime();
}

使用示例:

String[] dateStrings = { "00:01:12", "00:00:22" };
DateFormat df = new SimpleDateFormat("hh:mm:ss");
Date total = sumDates(dateStrings, df);
System.out.println(df.format(total)); //output: 00:01:34
于 2012-04-17T23:08:36.287 回答
0

java.sql.Time 旨在表示时间点,而不是持续时间,因此您不能直接对该类的对象进行算术运算。我有点惊讶没有 Duration 的 java.sql 模拟,因为一些 RDBMS 提供了区别。无论如何,您始终可以手动执行此操作,使用(半伪)代码如下:

int totalSeconds = 0;
for (java.sql.Time s : myResultSet) {
    totalSeconds += s.getHours()*3600 + s.getMinutes()*60 + s.getSeconds();
}
于 2012-04-17T23:05:11.483 回答