如何对java.sql.Time对象执行算术运算?

时间:2012-06-21 09:28:07

标签: java mysql time

我有一些java.sql.Time对象如下:

    String s1 = "12:00:04";
    String s2 = "12:23:34";
    String s3 = "12:03:02";
    String s4 = "11:00:54";

    int dij = j-i;
    int dmj = j-m;
    java.sql.Time tdi = java.sql.Time.valueOf(s1);
    java.sql.Time tki = java.sql.Time.valueOf(s2);
    java.sql.Time tdm = java.sql.Time.valueOf(s3);
    java.sql.Time tdj = java.sql.Time.valueOf(s4);

如何对这些对象执行减法运算?我想在java.sql.Time对象本身得到结果,但秒数也会起作用。 不推荐使用java.sql.Time类中给出的大多数方法。 http://docs.oracle.com/javase/7/docs/api/java/sql/Time.html

2 个答案:

答案 0 :(得分:3)

由于java.sql.Time包裹java.util.Date,我不确定减法并将结果放在java.sql.Time对象中有意义

我宁愿执行减法(最有可能使用毫秒字段和getTime访问器),并将结果存储为表示秒数/毫秒等的数字。

如果您正在执行大量算术,则解决方案最有可能查看Joda-Time。请参阅常见问题解答arithmetic-related信息。 Joda-Time具有更加一致且有用的API,并且是线程安全的(与标准java.util.Date/Calendar不同)

答案 1 :(得分:1)

我建议您使用Joda Time java library,它非常擅长处理Java中的日期和时间。

示例:

public boolean isRentalOverdue(DateTime datetimeRented) {
  Period rentalPeriod = new Period().withDays(2).withHours(12);
  return datetimeRented.plus(rentalPeriod).isBeforeNow();
}