两个给定时间之间的等待时间

时间:2013-11-20 22:13:43

标签: java time sleep

我提出了一种方法来停止程序一段时间给出的时间。

Time end = ...
Time begin =....
if (end.getHours() == begin.getHours()) {
    Thread.sleep((end.getMinutes()-begin.getMinutes())*60000);
} else {
    Thread.sleep(((60-begin.getMinutes())+ (end.getMinutes())+(end.getHours()-begin.getHours())*60)*60000);
}   
你怎么看?有更简单的方法吗?

3 个答案:

答案 0 :(得分:1)

你的解决方案似乎很复杂,因此可能是错误的。

因为它看起来像家庭作业,所以我只给你一个提示。尝试首先以更简单的度量单位转换时间,然后区分它。

EG。从一天开始以分钟数转换两次,然后减去:

  • 7.30 - > 450
  • 8.10 - > 490
  • 差异:490-450 = 40分钟

答案 1 :(得分:0)

在代码的else部分,因为你有

  

(60-begin.getMinutes())

你必须从总数中减去60分钟,所以代码不会像这样工作。此外,您还需要另外一对括号。相反,试试这个:

else{
    Thread.sleep(((end.getMinutes()-begin.getMinutes())+(end.getHours()-begin.getHours())*60)*6000);
}

答案 2 :(得分:0)

  你怎么看?有更简单的方法吗?

由于我假设您正在讨论扩展java.sql.Time的{​​{1}},我会使用java.util.Date方法以毫秒计算时间:

getTime()

无需转换。使用已弃用的Thread.sleep(end.getTime() - begin.getTime()); getHours()方法的任何解决方案都会在夏令时转换时出错,因为小时数会跳转。