Найти разницу в дате - PullRequest
       22

Найти разницу в дате

1 голос
/ 07 декабря 2009

Какой эффективный способ узнать, скажем, если дата на 5 дней раньше, чем другой день? Нужно ли сначала анализировать оба дня с использованием определенного SimpleDateFormat, прежде чем сравнивать?

Ответы [ 9 ]

12 голосов
/ 07 декабря 2009

Лучший API даты и времени Java - Время Joda . Это делает эти и другие задачи намного проще, чем использование стандартного API.

1 голос
/ 07 декабря 2009

Интерфейс Calendar имеет несколько приятных методов, включая before, after и equals.

1 голос
/ 07 декабря 2009

Наиболее быстро, но наименее точно, вы можете просто поместить оба в java.util.Date, getTime () на оба и разделить разницу на количество миллисекунд в дне.

Вы можете сделать это немного точнее, создав два объекта Календаря и поработав с ними.

Если вы действительно хотите решить эту проблему хорошо, и у вас есть немного времени, посмотрите на Joda Time.

0 голосов
/ 07 декабря 2009

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

    public static boolean compare5days(Date date, Date another) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(another);
        cal.add(Calendar.DATE, -5);

        // clear time 
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);

        return date.before(cal.getTime());
    }
0 голосов
/ 07 декабря 2009

days = (date2.getTime () - date1.getTime ())

0 голосов
/ 07 декабря 2009

Вы можете сделать

Long DAY_IN_MILLIS = 86400000;

if((dateA - dateB) > DAY_IN_MILLIS * 5) {
    // dateA is more than 5 days older than dateB
}
0 голосов
/ 07 декабря 2009
Date date1 = // whatever
Date date2 = // whatever

Long fiveDaysInMilliseconds = 1000 * 60 * 60 * 24 * 5    
boolean moreThan5Days = Math.abs(date1.getTime() - date2.getTime()) > fiveDaysInMilliseconds 
0 голосов
/ 07 декабря 2009
0 голосов
/ 07 декабря 2009
days = (date2.getTime() - date1.getTime())/86400000L
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...