【问题标题】:Best way to compare Time in Java [duplicate]在Java中比较时间的最佳方法[重复]
【发布时间】:2011-11-16 16:42:17
【问题描述】:

我需要在 java 中比较两次,并确保它们之间的距离在十分钟内。这看起来很简单,而且在 Date 被弃用之前也很简单。有谁知道在java中编程的最佳方法是什么?我看到了公历,但我看不到如何访问分钟或天等字段。

【问题讨论】:

  • java.util.Date 据我所知并没有被弃用(它的许多方法都是)。
  • 您有日期、日历和来自第 3 方的多个选项。根据您的使用情况,您可能需要考虑夏令时,而您可能需要尽量避免使用其他时间。您可以查看:stackoverflow.com/questions/23914997/… 以查看使用 1970 年的毫秒数的一些很好的示例以及其他一些选项。

标签: java date time calendar


【解决方案1】:

Date.getTime() 未被弃用,并为您提供一个表示自纪元以来的毫秒数。您可以以此为基础进行此类简单的比较。

long diffInMins = Math.abs(date1.getTime() - date2.getTime()) / 60000;

【讨论】:

    【解决方案2】:

    考虑使用JodaTime 库,它使这种事情变得更容易。这最终将成为官方 jdk 的一部分。 (交叉手指)

    【讨论】:

    • ,还是传闻成为jdk的一部分?有区别..
    【解决方案3】:

    正如 Mechkov 所说,您可以创建一个日历并使用 before、after 和 compare 方法来测试差异。

    如果你想要获取日历的分钟,你只需要使用这个

    Calendar cal = Calendar.getInstance();
    int minutes = cal.get(Calendar.MINUTE);
    

    希望对你有帮助!

    【讨论】:

      【解决方案4】:
      boolean withinTenMinutes(Date date1, Date date2) {
        boolean withinTenMins = false;
        long diffInMillis = Math.abs(date1.getTime() - date2.getTime());
        if (diffInMillis <= 10*60*1000) {
          withinTenMins = true;
        }
        return withinTenMins;
      }
      

      【讨论】:

        【解决方案5】:

        使用日历 API 或 Joda Time API。

        【讨论】:

          猜你喜欢
          • 2011-10-16
          • 1970-01-01
          • 1970-01-01
          • 2020-09-29
          • 1970-01-01
          • 2011-03-13
          • 1970-01-01
          • 1970-01-01
          • 2010-09-13
          相关资源
          最近更新 更多