Как проверить 6 дней подряд с указанной даты? - PullRequest
0 голосов
/ 13 января 2011

Я застрял в середине своей работы, что, как я могу проверить в течение 6 дней подряд?

например:

, если указанная дата: 01 /01/2011

И я хотел проверить 6 дней подряд с 01.01.2011 из списка доступных дат.после нахождения последовательного дня следует продолжить со следующей последовательной цепочкой вперед, которая доступна в списке.

и отследить, сколько раз найдены 6 последовательных дней и когда?мне, это будет очень полезно для меня ...

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 13 января 2011

Как я уже сказал в своем комментарии, неясно, что вы действительно ищете - но почти определенно , что использование Joda Time сделает вашу жизнь проще, чем стандартная библиотека. Это просто лучший API даты / времени, который приводит к более ясному коду.

Например, это будет повторять дату и следующие 6 дат:

LocalDate date = new LocalDate(2010, 1, 1); // January is 1 in Joda. How novel.
for (int i = 0; i < 7; i++)
{
    // Do something with date here - check it or whatever
    date = date.plusDays(1);
}

Вы также можете написать это немного по-другому:

LocalDate start = new LocalDate(2010, 1, 1);
LocalDate end = start.plusDays(7);
for (LocalDate date = start; date.isBefore(end); date = date.plusDays(1))
{
    // Do something with date here
}
1 голос
/ 13 января 2011

Сортируйте список дат и затем используйте свою логику

 List<Date> dateList = new ArrayList<Date>();
    //add your dates here
    Collections.sort(dateList);
    int count = 0;
    Date previousDate = null;
    List<Date> datesGroup = new ArrayList<Date>();
    for (Date date : dateList) {
        if (previousDate == null) {
            previousDate = new Date();
            count++;
        } else {
            long diff = date.getTime() - previousDate.getTime();
            if (diff == 86400000) {
                count++;
            } else {
                count = 0;
                datesGroup.clear();
            }
        }
        datesGroup.add(date);
        previousDate.setTime(date.getTime());
        if (count == 6) {
            break;
        }
    }
    for (Date dates : datesGroup) {
        System.out.println("dates sorted : " + dates);
    }
1 голос
/ 13 января 2011
Calendar lowerCal = Calendar.getInstance();
        lowerCal.set(Calendar.MONTH, 0);
        lowerCal.set(Calendar.DATE, 1);
        lowerCal.set(Calendar.YEAR, 2011);
        //set other param 0

        Calendar higherCal = Calendar.getInstance();
        higherCal.set(Calendar.MONTH, 0);
        higherCal.set(Calendar.DATE, 1);
        higherCal.set(Calendar.YEAR, 2011);
        higherCal.add(Calendar.DATE, 6);
        //set other param 0
        Calendar calToCheck = Calendar.getInstance();
        if (calToCheck.compareTo(higherCal) <= 0   &&  calToCheck.compareTo(lowerCal) >= 0 ){
                //YES
        }

Также смотрите

0 голосов
/ 13 января 2011

Этот фрагмент кода дает вам разницу между двумя датами в днях:

import java.util.*;
 public class DateDifference {
   public static void main(String args[]){
     DateDifference difference = new DateDifference();
     }
     DateDifference() {
     Calendar cal1 = new GregorianCalendar();
     Calendar cal2 = new GregorianCalendar();

     cal1.set(2008, 8, 1); 
     cal2.set(2008, 9, 31);
     System.out.println("Days= "+daysBetween(cal1.getTime(),cal2.getTime()));
     }
     public int daysBetween(Date d1, Date d2){
     return (int)( (d2.getTime() - d1.getTime()) / (1000 * 60 * 60 * 24));
         }
   }

У вас не должно возникнуть проблем с включением его в ваш код, чтобы он делал то, что вам нужно. Код был взят из здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...