Как выполнить обработку для диапазона дат, которые находятся в пределах верхнего и нижнего предела, заданного двумя переменными даты - PullRequest
2 голосов
/ 02 октября 2011

У меня есть 2 даты в разных переменных даты в настольном приложении Java. Теперь я хочу создать цикл, который выполняет некоторую обработку для каждой даты в этих двух датах. (Исключая сценарий, в котором дата = верхняя граница значения даты, но включая сценарий, где дата = нижняя граница значения даты).

Я понимаю базовое использование дат в Java, я просто хочу знать, есть ли какой-нибудь простой способ циклически проходить все даты между этими двумя датами, а затем выполнить некоторую обработку для каждой даты?

Еще один вопрос, связанный с датами - как получить только текущую системную дату в java, а также часть года в переменной даты (для получения части года в году мне нужно поместить все значение переменной даты в строковую переменную, а затем извлечь соответствующую часть, которая представляет год?)

1 Ответ

1 голос
/ 02 октября 2011

Вот пример: http://helpdesk.objects.com.au/java/how-can-i-iterate-through-all-dates-in-a-range

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;

public class DateIterator
   implements Iterator<Date>, Iterable<Date>
{

    private Calendar end = Calendar.getInstance();
    private Calendar current = Calendar.getInstance();

    public DateIterator(Date start, Date end)
    {
        this.end.setTime(end);
        this.end.add(Calendar.DATE, -1);
        this.current.setTime(start);
        this.current.add(Calendar.DATE, -1);
    }

    public boolean hasNext()
    {
        return !current.after(end);
    }

    public Date next()
    {
        current.add(Calendar.DATE, 1);
        return current.getTime();
    }

    public void remove()
    {
        throw new UnsupportedOperationException(
           "Cannot remove");
    }

    public Iterator<Date> iterator()
    {
        return this;
    }

    public static void main(String[] args)
    {
        Date d1 = new Date();
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE, 22);
        Date d2 = cal.getTime();

        Iterator<Date> i = new DateIterator(d1, d2);
        while(i.hasNext())
        {
            Date date = i.next();
            System.out.println(date);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...