我正在寻找一个Java类,可以在其中指定一组日期规则,例如“每个第3个星期日”和“每个第二个月的第一个星期一”。我希望能够得到像无限迭代器这样的东西(.next()将返回与规则集匹配的下一个日期)。
我想我可以自己构建它-但是日历很麻烦,而且感觉应该已经存在类似的东西。我讨厌成为重新发明更笨拙的轮子的人。
有人知道这样的事吗?我一直在研究JODA,它似乎为其奠定了基础,但似乎没有提供我想要的全部功能。
我不认为有任何现成的用于joda-time或Java Calendar API的迭代器,但是使用joda是如此简单,您应该使用它。例如,在暂停几个月后重新熟悉了joda之后,我在大约10分钟的时间内完成了此操作:
public class InstantIterator implements Iterator<Instant>, Iterable<Instant> { private Instant current; private final Instant original; private Duration skip; private List<Instant> skipThese; public InstantIterator(Instant startFrom, Duration skip) { this.current = original = startFrom; this.skip = skip; skipThese = new Vector<Instant>(); } public boolean hasNext() { return true; } public Instant next() { Instant currentNext = current.toInstant(); current = current.plus(skip); while (skipThese.contains(currentNext)) { currentNext = current.toInstant(); current = current.plus(skip); } return currentNext; } public void remove() { skipThese.add(current.toInstant()); } public Iterator<Instant> iterator() { return this; } public void rewind() { current = original.toInstant(); } public void resetRemoved() { skipThese.clear(); } public void resetIterator() { rewind(); resetRemoved(); } }
乔达时间真棒:-)