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