Java Stream流生成从指定日期到当前日期的所有日期/时间范围

简介: Java Stream流生成从指定日期到当前日期的所有日期/时间范围

介绍

好的,以下是一个概述Java 8日期功能,并给出实现一个使用Stream流生成从指定日期到当前日期的所有日期/时间范围的例子。


Java 8引入了新的日期/时间API,它提供了更好的API设计、类型安全、线程安全和可读性,提高了代码的健壮性和可维护性。这个API包含了java.time包,其中包含了LocalDate、LocalDateTime、LocalTime、ZonedDateTime等各种日期和时间相关的类和方法。这些新的API也提供了流式API设计,可以使用Stream流来实现需要的日期/时间范围。


获取LocalDate类型区间

/**
 * 获取日期区间
 *
 * @param startDate 开始日期
 * @param endDate   结束日期
 * @return {@link List}<{@link LocalDate}>
 */
public List<LocalDate> getLocalDateRanges(LocalDate startDate, LocalDate endDate) {
    return Stream.iterate(startDate, d -> d.plusDays(1))
            .limit(ChronoUnit.DAYS.between(startDate, endDate) + 1)
            .collect(Collectors.toList());
}

获取LocalDateTime类型区间

/**
 * 获取时间区间
 *
 * @param startDateTime 开始日期时间
 * @param endDateTime   结束日期时间
 * @return {@link List}<{@link LocalDateTime}>
 */
public static List<LocalDateTime> getLocalDateTimeRanges(LocalDateTime startDateTime, LocalDateTime endDateTime) {
    return Stream.iterate(startDateTime, d -> d.plusDays(1))
            .limit(ChronoUnit.DAYS.between(startDateTime.toLocalDate(), endDateTime.toLocalDate()) + 1)
            .collect(Collectors.toList());
}

测试打印日志

public static void main(String[] args) {
   List<LocalDateTime> localDateTimeRanges = getLocalDateTimeRanges(LocalDateTime.of(2023, 5, 1, 0, 0), LocalDateTime.now());
   System.out.println(localDateTimeRanges);
}

控制台输出

[2023-05-01T00:00, 2023-05-02T00:00, 2023-05-03T00:00, 2023-05-04T00:00, 2023-05-05T00:00, 2023-05-06T00:00, 2023-05-07T00:00, 2023-05-08T00:00, 2023-05-09T00:00, 2023-05-10T00:00, 2023-05-11T00:00, 2023-05-12T00:00, 2023-05-13T00:00, 2023-05-14T00:00, 2023-05-15T00:00, 2023-05-16T00:00, 2023-05-17T00:00, 2023-05-18T00:00, 2023-05-19T00:00, 2023-05-20T00:00, 2023-05-21T00:00, 2023-05-22T00:00, 2023-05-23T00:00, 2023-05-24T00:00, 2023-05-25T00:00, 2023-05-26T00:00, 2023-05-27T00:00, 2023-05-28T00:00, 2023-05-29T00:00, 2023-05-30T00:00, 2023-05-31T00:00, 2023-06-01T00:00]
相关文章
|
1月前
|
SQL Java API
使用Java Stream API简化集合操作
使用Java Stream API简化集合操作
|
6天前
|
前端开发 JavaScript Java
【前端学java】java中的日期操作(13)
【8月更文挑战第10天】java中的日期操作
9 2
【前端学java】java中的日期操作(13)
|
3天前
|
Java API 开发者
|
11天前
|
存储 算法 Oracle
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
39 8
|
9天前
|
自然语言处理 Java API
"告别Java8 Stream噩梦,JDFrame神器来袭!让你的代码简洁如诗,效率翻倍,编程新体验等你尝鲜!"
【8月更文挑战第11天】Java 8的Stream API以强大的函数式编程能力革新了集合数据处理方式,但其抽象概念和复杂的链式调用让不少开发者望而却步。为此,JDFrame框架应运而生,通过直观易懂的操作符简化Stream使用,减少代码量并提高效率。
25 3
|
14天前
|
数据可视化 IDE Java
Java8的Stream流太难用了?看看JDFrame带来的革新体验
【8月更文挑战第6天】在Java开发者的日常工作中,Java 8引入的Stream API无疑是一个革命性的特性,它极大地简化了集合(Collection)的处理方式,使得数据操作更加声明式、函数式。然而,对于初学者或是从早期Java版本迁移过来的开发者而言,Stream API的复杂性和抽象性可能会成为一道门槛。今天,我们就来探讨如何通过JDFrame这样的工具或框架,以及掌握一些高效学习策略,让Java Stream的使用变得更加得心应手。
50 5
|
13天前
|
存储 Java API
探索Java中的Stream API: 提升数据处理的效率与优雅
在Java的海洋中,Stream API如同一股清流,为数据处理注入了新的活力。本文将深入探讨Stream API的核心概念、操作以及它如何改变我们编写和理解代码的方式。通过实际案例,我们将揭示这一现代编程范式如何简化集合处理,提高代码的可读性与性能。
|
17天前
|
Java API 数据处理
Java 8新特性:Stream API的实用指南
【8月更文挑战第3天】在Java 8中,最引人注目的新特性之一是Stream API。这个API允许开发者以声明式方式处理数据集合,提供了一种高效且易于理解的数据处理方法。本文将介绍Stream API的基本概念、常用操作以及如何在实际开发中应用。
|
2天前
|
并行计算 Java API
|
4天前
|
前端开发 Oracle Java
Java 22 新增利器: 使用 Java Stream Gather 优雅地处理流中的状态
本文我们分析了 什么 是 “流”,对比了 Java 上几种常见的 “流”库,引入和详细介绍了 Java 22 中的 Stream Gather API 。同时也简单分享了利用 虚拟线程 如何简化 StreammapConcurrent操作符的实现。