【问题标题】:how to add series of sql time values in java如何在java中添加一系列sql时间值
【发布时间】:2012-04-17 22:35:16
【问题描述】:

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

如何将这些 java.sql.time 值相加成为时间总和?

谢谢!

【问题讨论】:

    标签: java sql time


    【解决方案1】:
    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
    

    【讨论】:

      【解决方案2】:

      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();
      }
      

      【讨论】:

      • Joda time 确实有时间间隔。
      猜你喜欢
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      • 2018-07-17
      • 2019-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多