当前位置: 首页 > 面试题库 >

如何获取两个日期之间的日期列表?

海保臣
2023-03-14
问题内容

在我的应用程序中,用户应从选择日期listview。问题是生成此列​​表。例如,我需要 2010年至2013年6月至8月
之间的所有日期(期间可能是 daymonthyear )。是否有任何方法可以获取该数据?

范例:我需要 2013年1月1*至2013年1月1 日之间的日期 *

  1. 2013年1月1日
  2. 2013年2月1日
  3. 2013年3月1日
  4. 2013年4月1日
  5. 2013年5月1日
  6. 2013年6月1日
  7. 2013年7月1日
  8. 2013年8月1日
  9. 2013年9月1日
  10. 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;
}

请注意,其中将包括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();
                }
            };
        }
    };
}


 类似资料:
  • 问题内容: 使用标准的mysql函数可以编写查询,该查询将返回两个日期之间的天数列表。 例如,给定2009-01-01和2009-01-13,它将返回一个具有以下值的列表: 编辑:看来我还不清楚。我要生成此列表。我在数据库中存储了值(按日期时间),但希望将它们在左外部联接中汇总到上述日期列表中(我希望这种联接的某些右侧在几天内会为null并将对此进行处理) )。 问题答案: 我将使用此存储过程将所

  • 问题内容: 我有两个这样的表: 表格1 表2 我想从 Table1中 选择并插入 Table2中 。 例如: 在表1中,我有这个 在表2中,我想要这个 带有样本数据的表结构 问题答案: 感谢您的架构。它使处理您的问题变得容易。我对您的架构进行了一些更改以利用auto_increment 在这里,我在emp_leave_daywise表上添加了唯一约束,因为id整数上的主键不能确保记录不重复。 em

  • 问题内容: 我想要一个开始日期和结束日期之间的日期列表。 结果应为所有日期的列表,包括开始日期和结束日期。 问题答案: 一次添加一天直到达到结束日期: 实现自己的迭代器也可以做到这一点并不难,那就更好了。

  • 问题内容: 在MySql数据库中有表 我的问题是,我要传递开始日期和结束日期,然后我将获得列日期,例如: 那么我将获得101,102,103 UserId的值。但是我出错了 问题答案: 这可能会更好: 也可能是保留字,对此不太确定。如果是这种情况,则您需要在其周围加反引号(前后应有一个`)

  • 问题内容: 我在一个项目中工作,我在Date中有两种类型。我想计算这两个日期之间的周数。日期可以是不同的年份。有什么好的解决方案吗? 我试图通过Joda-time来实现这一点,这在其他主题中已得到建议。 我不熟悉该库,但我尝试执行以下操作: 但这是完全错误的…有什么建议吗? 问题答案: 乔达时间很简单:

  • 问题内容: 在新API中是否有可能获取 两个日期之间的所有日期? 假设我有这部分代码: 现在我需要介于和之间的所有日期。 我正在考虑获取两个日期中的一个并进行迭代: 有没有更好的方法来获取日期? 问题答案: 假设您主要想在日期范围内进行迭代,那么创建一个可迭代的类将很有意义。那可以让你写: 就像是: 添加equals和hashcode方法,getter可能很有意义,也许有一个静态工厂+私有构造函数