java - 给定一个 Calendar 实例,确定它是否已经过一小时的最简单方法是什么?

标签 java date time comparison

在代码块中追踪一些微妙的、烦人的错误。

此代码给出了一个 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/

相关文章:

C++ 在给定的日期和时间运行函数

python - 返回每个 id 的持续时间

java - HikariPool-1 - driverClassName 需要 jdbcUrl

java - FindViewByID 在 Fragment Navigation Drawer 上返回 null

java - 如何使用相同的 ResultSet 填充 2 个 CachedRowSet?

Python - 以 YYYY-MM-DD 格式获取昨天的日期作为字符串

c - 如何在c编程中分隔日期 c 日期函数

java - java中的时间戳转换

java - 作为制作人我可以删除主题吗?或者我可以在写主题之前删除它们吗

python - 除非在 10 分钟内,否则按前 15 分钟计算