java - 如何使用 Joda-Time 循环月份?

标签 java loops jodatime treemap

之前我大多不得不在特定时间段内的几天之间循环,并且我使用了这样的循环:

for(LocalDate iDate = gv.firstDate; iDate.isBefore(gv.lastDate); iDate = iDate.plusDays(1)) {
   ...
}

现在我有一个像这样的TreeMap:

TreeMap<LocalDate, ArrayList<Email>> dates;

我想循环从 gv.firstDategv.lastDate 的所有月份,并获取该月内的所有电子邮件

有人知道使用 Joda-Time 执行此操作的好方法吗?

编辑:

将其与此结合起来会很棒,所以现在从日期 TreeMap 中获取电子邮件。

    for(int y = 2004; y < 2011; y++) {
        for(int m = 0; m < 12; m++) {
            // get all of that month
        }
    }

最佳答案

您可以执行类似的操作:

for (Map.Entry<LocalDate, ArrayList<Email>> entry : dates) {
    if (entry.getKey().isBefore(gv.firstDate())) {
        continue;
    }

    if (entry.getKey().isAfter(gv.lastDate())) {
        break;
    }

    // process the emails
    processEmails(entry.getValue());
}

如果您可以自由使用 Google Guava,您可以执行以下操作:

Map<LocalDate, ArrayList<Email>> filteredDates = Maps.filterKeys(dates, new Predicate<LocalDate>() {
    public boolean apply(LocalDate key) {
        if (entry.getKey().isBefore(gv.firstDate())) {
            return false;
        }

        if (entry.getKey().isAfter(gv.lastDate())) {
            return false;
        }

        return true;
    }
});

// process the emails
processEmails(filteredDates);

关于java - 如何使用 Joda-Time 循环月份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8750580/

相关文章:

java - 数据报包的大小

java - 在 Swagger 中更改 API 显示顺序(使用 Spring)

java - Eclipselink 自动创建 utf8_unicode_ci

java - 在循环中连接 Java 数组

python - Python 中的多处理(HoG 功能) - 返回空数组

javascript - 循环遍历 2 个数组并通过扭曲查找差异

java - 为什么 joda dateTime 给出的月份不正确?

java - 将 DateString 解析为 Date 或 DateTime

java - spring sftp在远程读写,无需本地目录

java - 检查java中没有时间的日期范围并使用jodatime