在java.sql.Time类型中执行时间算术的最佳方法是什么?

时间:2011-12-02 12:05:27

标签: java mysql time

我已经阅读this问题并且看起来相当漫长,特别是因为我想要做很多事情并且避免使用java.util.date类型。我基本上希望能够将特定时间的任意时间值加上和减去,如(0220 + 3小时45分钟)。我最好的是将值转换为“long”类型然后执行算术,但我确定这不是可行的方法。 (转换回来时可能出现溢出和不准确的情况?) 只需要有最佳方法的想法。

1 个答案:

答案 0 :(得分:1)

我认为转移到long,然后添加代表“3小时45分钟”的适当毫秒数就行了。没有办法溢出它,除非你添加足够的毫秒来溢出64位长 - 这是很多毫秒。

long millis = time.getTime();
millis += 3 * 3600 * 1000;
millis += 45 * 60 * 1000;
time = new java.sql.Time(millis);

另一种方法是使用神话般的Joda Time方法,这种方法会更昂贵但更容易阅读/更容易:

org.joda.time.DateTime dateTime = new DateTime(time.getTime());
dateTime = dateTime.plusHours(3).plusMinutes(45);
time = new java.sql.Time(dateTime.getMillis());