在代码块中追踪一些微妙的、烦人的错误。
此代码给出了一个 Calendar 实例,该实例是在某个事件开始时创建的。我们需要确定此事件是否已经发生了一小时。
我知道有几种方法可以做到这一点:
- 使用 JodaTime 并计算持续时间
- 将给定日历与一小时前创建的新日历进行比较
- 将给定的 Calendar.getTime 与一小时前创建的日期进行比较
这些方法都有自己的怪癖,并且似乎有代码味道。 Java中有没有一种简单、简洁的方式来表达“从现在到一小时前发生的事情”?
当我对此进行单元测试时,我会检查:
- 45 分钟前(正确)
- 61 分钟前(错误)
- 0 分钟前(正确)
- -1 分钟前(错误还是正确?)
最佳答案
您可以创建一个新的日历实例(包含当前日期/时间)并将其与给定的实例进行比较:
public boolean isWithinHour(Calendar given)
{
long oldTime = given.getTimeInMillis();
long newTime = Calendar.getInstance().getTimeInMillis();
long diff = newTime - oldTime;
return (diff <= 3600 * 1000); // 3600 seconds in millis
}
关于java - 给定一个 Calendar 实例,确定它是否已经过一小时的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7715319/