Ava*_*van 3 java android jodatime
在我的应用程序中,用户应该从listview. 问题是生成这个列表。例如,我需要2010-2013或6-8月之间的所有日期(期间可能是日、月、年)。是否有任何方法可以获取该数据?
示例:我需要01.01.2013 - 10.01.2013之间的日期
提前致谢
对于列表,您可以这样做:
public static List<LocalDate> datesBetween(LocalDate start, LocalDate end) {
List<LocalDate> ret = new ArrayList<LocalDate>();
for (LocalDate date = start; !date.isAfter(end); date = date.plusDays(1)) {
ret.add(date);
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
请注意,这将包括end. 如果您希望它排除结尾,只需将循环中的条件更改为date.isBefore(end).
如果您只需要一个,Iterable<LocalDate>您可以编写自己的类来非常有效地执行此操作,而不是建立一个列表。如果您不介意一定程度的嵌套,您可以使用匿名类来执行此操作。例如(未经测试):
public static Iterable<LocalDate> datesBetween(final LocalDate start,
final LocalDate end) {
return new Iterable<LocalDate>() {
@Override public Iterator<LocalDate> iterator() {
return new Iterator<LocalDate>() {
private LocalDate next = start;
@Override
public boolean hasNext() {
return !next.isAfter(end);
}
@Override
public LocalDate next() {
if (next.isAfter(end)) {
throw NoSuchElementException();
}
LocalDate ret = next;
next = next.plusDays(1);
return ret;
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
};
}
};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12931 次 |
| 最近记录: |