Próbuję bezskutecznie wdrożyć iterator Date z czasem Joda.
Potrzebuję czegoś, co pozwala mi na powtarzanie wszystkich dni od daty rozpoczęcia do daty zakończenia
Czy masz pojęcie, jak to zrobić?Java Joda Time - Implementowanie iteratora zakresu dat
Odpowiedz
Oto coś, od czego zaczniesz. Może warto pomyśleć o tym, czy ma to być ekskluzywny włącznie lub na końcu, itp
import org.joda.time.*;
import java.util.*;
class LocalDateRange implements Iterable<LocalDate>
{
private final LocalDate start;
private final LocalDate end;
public LocalDateRange(LocalDate start,
LocalDate end)
{
this.start = start;
this.end = end;
}
public Iterator<LocalDate> iterator()
{
return new LocalDateRangeIterator(start, end);
}
private static class LocalDateRangeIterator implements Iterator<LocalDate>
{
private LocalDate current;
private final LocalDate end;
private LocalDateRangeIterator(LocalDate start,
LocalDate end)
{
this.current = start;
this.end = end;
}
public boolean hasNext()
{
return current != null;
}
public LocalDate next()
{
if (current == null)
{
throw new NoSuchElementException();
}
LocalDate ret = current;
current = current.plusDays(1);
if (current.compareTo(end) > 0)
{
current = null;
}
return ret;
}
public void remove()
{
throw new UnsupportedOperationException();
}
}
}
class Test
{
public static void main(String args[])
{
LocalDate start = new LocalDate(2009, 7, 20);
LocalDate end = new LocalDate(2009, 8, 3);
for (LocalDate date : new LocalDateRange(start, end))
{
System.out.println(date);
}
}
}
To póki od Pisałem iterator w Javie, więc nadzieja to prawda. Myślę, że to dość dużo w porządku ...
Oh dla C# bloków iterator, to wszystko, co mogę powiedzieć ...
Dziękuję, to właśnie uczyniło moje życie co najmniej 900% łatwiejsze. –
Szukałem go, czy Joda ma coś do reprezentowania "zakresu dat" ... Najwyraźniej nie, skoro proponujesz napisanie własnej wersji LocalDateRange. – Jonik
@Jonik Joda oferuje interfejs Interval i jego różne implementacje. Jednak nie byłem w stanie znaleźć implementacji "Iterable": może bardziej złożonej ... – Stephan
- 1. Podział zakresu dat na fragmenty zakresu dat
- 2. Porównywanie dwóch obiektów Joda-Time DateTime
- 3. Dodaj jeden dzień do Joda-Time DateTime
- 4. Ciąg wzorcowy od joda-time DateTimeFormatter?
- 5. Dodawanie Joda Time to Android Studio
- 6. Problem z wydajnością z joda-time DateTime.with *()
- 7. Get java.util.Date się z Joda-Time DateTime
- 8. Joda Time - Konwersja obiektu kalendarza na LocalDate
- 9. Joda Time - Zdobądź nazwę strefy czasowej?
- 10. Joda-Time Liczba dni od Epoki
- 11. Odliczaj do Bożego Narodzenia z Joda-Time
- 12. Konwencja URL dla zakresu dat
- 13. Tworzenie zakresu dat w Pythonie
- 14. Wybierz dane z zakresu dat
- 15. ORACLE SQL Koniec zakresu dat
- 16. Getting dniach między zakresu dat
- 17. Powtórzenie zakresu dat w NodeJS
- 18. Wyjątek w wątku "główny" java.lang.NoClassDefFoundError: org/joda/time/ReadableInstant
- 19. Implementowanie niebezpiecznych interfejsów Java
- 20. Implementowanie Java Comparator
- 21. Joda Czas na dołączenie do Java 7?
- 22. Implementowanie pierwszego iteratora drzewa głębi w języku Python
- 23. Jak zachować strefę czasową w znaczniku czasu Joda-Time?
- 24. Jak przekonwertować Joda-Time DateTime na java.util.Date i na odwrót?
- 25. minus 1 godzina do DateTime przy użyciu Joda Time
- 26. Jakiś związek między API Quartz a API Joda Time?
- 27. Konwersja 24-godzinnego zegara na pm/pm w Joda-Time
- 28. joda-time: new DateTime (String) vs DateTime.parse (String)
- 29. Selektor zakresu dat jest podobny do selektora zakresu dat Google Analytics?
- 30. Jak znacznik zakresu dat za pomocą znacznika czasu HTML5?
Ta pomoc w ogóle? http://stackoverflow.com/questions/847520/java-date-iterator-factory-with-rules-specifying-how-to-calculate-the-intervals – Davis
Jeśli chcesz dni, chcesz spojrzeć na klasę LocalDate (ustaw jako datę początkową) i zrób co najmniej dni dla każdego następnego. Zapobiegnie to natychmiastowym problemom ze strefą czasową. – Yishai