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月前
|
Java API 调度
Java 日期与时间处理:精准掌控时间流转
Java 8引入了全新的日期和时间API,解决了旧版`java.util.Date`和`Calendar`类设计不佳、操作繁琐的问题。新API包括`LocalDate`、`LocalTime`和`LocalDateTime`类,操作简洁直观,符合日常思维习惯。同时提供了`Period`和`Duration`处理时间间隔,以及`DateTimeFormatter`进行格式化输出。这些改进使开发者能更高效、准确地处理日期和时间,极大提升了开发效率与代码质量。 (239字符)
69 6
|
3月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
76 26
|
2月前
|
存储 Java 数据挖掘
Java 8 新特性之 Stream API:函数式编程风格的数据处理范式
Java 8 引入的 Stream API 提供了一种新的数据处理方式,支持函数式编程风格,能够高效、简洁地处理集合数据,实现过滤、映射、聚合等操作。
101 6
|
2月前
|
Java API 开发者
Java中的Lambda表达式与Stream API的协同作用
在本文中,我们将探讨Java 8引入的Lambda表达式和Stream API如何改变我们处理集合和数组的方式。Lambda表达式提供了一种简洁的方法来表达代码块,而Stream API则允许我们对数据流进行高级操作,如过滤、映射和归约。通过结合使用这两种技术,我们可以以声明式的方式编写更简洁、更易于理解和维护的代码。本文将介绍Lambda表达式和Stream API的基本概念,并通过示例展示它们在实际项目中的应用。
|
3月前
|
安全 Java API
告别SimpleDateFormat:Java 8日期时间API的最佳实践
在Java开发中,处理日期和时间是一个基本而重要的任务。传统的`SimpleDateFormat`类因其简单易用而被广泛采用,但它存在一些潜在的问题,尤其是在多线程环境下。本文将探讨`SimpleDateFormat`的局限性,并介绍Java 8引入的新的日期时间API,以及如何使用这些新工具来避免潜在的风险。
54 5
|
2月前
|
Rust 安全 Java
Java Stream 使用指南
本文介绍了Java中Stream流的使用方法,包括如何创建Stream流、中间操作(如map、filter、sorted等)和终结操作(如collect、forEach等)。此外,还讲解了并行流的概念及其可能带来的线程安全问题,并给出了示例代码。
124 0
|
4月前
|
Java 流计算
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
63 1
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
|
4月前
|
Java Shell 流计算
Flink-02 Flink Java 3分钟上手 Stream SingleOutputStreamOpe ExecutionEnvironment DataSet FlatMapFunction
Flink-02 Flink Java 3分钟上手 Stream SingleOutputStreamOpe ExecutionEnvironment DataSet FlatMapFunction
39 1
Flink-02 Flink Java 3分钟上手 Stream SingleOutputStreamOpe ExecutionEnvironment DataSet FlatMapFunction
|
3月前
|
安全 Java API
Java中的Lambda表达式与Stream API的高效结合####
探索Java编程中Lambda表达式与Stream API如何携手并进,提升数据处理效率,实现代码简洁性与功能性的双重飞跃。 ####
44 0
|
3月前
|
Java API 数据处理
探索Java中的Lambda表达式与Stream API
【10月更文挑战第22天】 在Java编程中,Lambda表达式和Stream API是两个强大的功能,它们极大地简化了代码的编写和提高了开发效率。本文将深入探讨这两个概念的基本用法、优势以及在实际项目中的应用案例,帮助读者更好地理解和运用这些现代Java特性。

热门文章

最新文章