当前位置: 首页 > 面试题库 >

如何在Java中比较两个日期?

能旭
2023-03-14
问题内容

我正在尝试比较两个日期,而我只想比较日期部分而不是时间部分,这就是我在程序中存储日期的方式:

Thu Jan 27 23:20:00 GMT 2011

我有一个:

ArrayList<Date> dateList;

我想用

dateList.compares(newDate);
// if the answer was false which means I 
// have new date then add the newdate to my list

但是由于还涉及时间部分,所以我无法获得正确的答案。我该如何解决我的问题?

我不想使用JODA-TIME


问题答案:

您可以像这样逐个比较价值

d1.getDate().equals(d2.getDate()) &&
d1.getYear().equals(d2.getYear()) &&
d1.getMonth().equals(d2.getMonth())

要么

Date date1 = new Date(d1.getYear(), d1.getMonth(), d1.getDate());
Date date2 = new Date(d2.getYear(), d2.getMonth(), d2.getDate());
date1.compareTo(date2);

如果您使用Date类,请考虑改用Calendar类这是最优雅的解决方案,为此使用Calendar和Comparator

public class CalendarDateWithoutTimeComparator implements Comparator<Calendar> {

    public int compare(Calendar cal1, Calendar cal2) {
        if(cal1.get(Calendar.YEAR) != cal2.get(Calendar.YEAR)) {
            return cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
        } else if (cal1.get(Calendar.MONTH) != cal2.get(Calendar.MONTH)) {
            return cal1.get(Calendar.MONTH) - cal2.get(Calendar.MONTH);
        }
        return cal1.get(Calendar.DAY_OF_MONTH) - cal2.get(Calendar.DAY_OF_MONTH);
    }
}

用法:

Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
// these calendars are equal

CalendarDateWithoutTimeComparator comparator = new CalendarDateWithoutTimeComparator();
System.out.println(comparator.compare(c1, c2));

List<Calendar> list = new ArrayList<Calendar>();
list.add(c1);
list.add(c2);

Collections.sort(list, comparator);


 类似资料:
  • 问题内容: 如果日期格式为和,如何在php中比较两个日期。 我正在使用此代码: 但它不起作用.. 问题答案: 您必须确保您的日期是有效的日期对象。 尝试这个: 然后,您可以执行该方法来获得差异。

  • 问题内容: 如何在PHP中比较两个日期? 在数据库中,日期看起来像2011-10-2。 如果我想将今天的日期与数据库中的日期进行比较,看哪个更大,我该怎么做? 我试过了 但这并不是真的那样。还有另一种方法吗? 更新:我知道这篇文章有点老,但是我只想提及carbon,它是与laravel一起使用的一类,但可以与经典php一起使用,并且它确实与日期有关。检查一下:碳 问题答案: 在数据库中日期看起来像

  • 我在android studio中使用firebase创建了一个聊天应用程序,我的所有活动都正常运行,除了日期显示, 我想设置日期在一次如果它是相同的否则显示新的日期如果它是不相同的上一个日期我试图设置但它显示一些错误 这里是错误 我获取当前日期 然后把它交给聊天室。java使用按钮。OnclickListner 这是我的适配器 有人知道怎么解决这个问题吗?

  • 问题内容: 如何使用Python比较两个日期以查看稍后的日期? 例如,我想检查当前日期是否超过了我创建的假期日期列表中的最后日期,因此它将自动发送电子邮件,告诉管理员更新holiday.txt文件。 问题答案: 使用方法和运算符及其种类。

  • 问题内容: 我有 以下格式的两个对象。 现在,我想将上述两个日期与时间进行比较。我应该如何在Java中进行比较。 谢谢 问题答案: 自实现以来,它很容易: 按照合同规定,如果分别被认为小于/等于/大于/大于(例如,在此之前/之前/之后),它将返回一个负整数/零/正整数。 请注意,还有和方法将改为返回布尔值。

  • 我在我的应用程序中使用moment.js,我将我的日期以特定格式传递给moment.js,它将它与系统时间进行比较,并给我漂亮的时间格式,如下所示: 这里,时间由我以指定格式作为时间戳给出。 我的问题是 fromNow() 函数采用系统日期而不是服务器日期。因此,如果用户在他的系统中使用具有5分钟延迟时间的手机,他将获得4分钟前作为最新更新的卡。 我想把我过的"时间"与服务器时间进行比较,那也将由