Сравните две даты на Java - PullRequest
25 голосов
/ 30 июня 2010

Мне нужно сравнить две даты в Java.Я использую такой код:

Date questionDate = question.getStartDate();
Date today = new Date();

if(today.equals(questionDate)){
    System.out.println("Both are equals");
}

Это не работает.Содержание переменных следующее:

  • questionDate содержит 2010-06-30 00:31:40.0
  • today содержит Wed Jun 30 01:41:25 IST 2010

Как можнорешить это?

Ответы [ 14 ]

0 голосов
/ 04 декабря 2014
public long compareDates(Date exp, Date today){

        long b = (exp.getTime()-86400000)/86400000;
        long c = (today.getTime()-86400000)/86400000;
        return b-c;
    }

Это работает для GregorianDates. 86400000 - это количество миллисекунд в дне, которое возвращает количество дней между двумя датами.

0 голосов
/ 27 августа 2014
public static double periodOfTimeInMillis(Date date1, Date date2) {
    return (date2.getTime() - date1.getTime());
}

public static double periodOfTimeInSec(Date date1, Date date2) {
    return (date2.getTime() - date1.getTime()) / 1000;
}

public static double periodOfTimeInMin(Date date1, Date date2) {
    return (date2.getTime() - date1.getTime()) / (60 * 1000);
}

public static double periodOfTimeInHours(Date date1, Date date2) {
    return (date2.getTime() - date1.getTime()) / (60 * 60 * 1000);
}

public static double periodOfTimeInDays(Date date1, Date date2) {
    return (date2.getTime() - date1.getTime()) / (24 * 60 * 60 * 1000L);
}
0 голосов
/ 14 декабря 2012

Вот еще один ответ: Вам необходимо отформатировать даты буксировки так, чтобы они соответствовали одному и тому же списку, чтобы можно было сравнивать их как строки.

    Date questionDate = question.getStartDate();
    Date today = new Date();

    SimpleDateFormat dateFormatter = new SimpleDateFormat ("yyyy/MM/dd");

    String questionDateStr = dateFormatter.format(questionDate);
    String todayStr = dateFormatter.format(today);

    if(questionDateStr.equals(todayStr)) {
        System.out.println("Both are equals");
    }
0 голосов
/ 16 ноября 2010

Вот что вы можете сделать, например, для сравнения гггг-мм-дд:

GregorianCalendar gc= new GregorianCalendar();
gc.setTimeInMillis(System.currentTimeMillis());
gc.roll(GregorianCalendar.DAY_OF_MONTH, true);

Date d1 = new Date();
Date d2 = gc.getTime();

SimpleDateFormat sf= new SimpleDateFormat("yyyy-MM-dd");

if(sf.format(d2).hashCode() < sf.format(d1).hashCode())
{
    System.out.println("date 2 is less than date 1");
}
else
{
    System.out.println("date 2 is equal or greater than date 1");
}
...