Java 8 LocalDateTime - 如何获取两个日期之间的所有时间

标签 java date java-stream iterable localdate

我想以 2018-01-31T17:20:30Z 格式生成两个日期之间的日期和时间列表(或 "yyyy-MM-dd'T'HH :mm:ss'Z'" ) 以 60 秒为增量。

到目前为止,我已经能够使用 LocalDate 对象生成两个日期之间的所有日期:

public class DateRange implements Iterable<LocalDate> {


  private final LocalDate startDate;
  private final LocalDate endDate;

  public DateRange(LocalDate startDate, LocalDate endDate) {
    //check that range is valid (null, start < end)
    this.startDate = startDate;
    this.endDate = endDate;
  }


@Override
public Iterator<LocalDate> iterator() {

    return stream().iterator();
}

public Stream<LocalDate> stream() {
    return Stream.iterate(startDate, d -> d.plusDays(1))
                 .limit(ChronoUnit.DAYS.between(startDate, endDate) + 1);
  }

给定开始日期和结束日期,这会生成一个 Iterable,其中包含介于两者之间的所有日期。

但是,我想修改它,以便它使用 LocalDateTime 对象每次以 60 秒的增量生成(即,不是每天生成一个值,而是生成 1440 个值,因为有 60 分钟假设开始和结束时间只有一天,每小时 24 小时)

谢谢

最佳答案

为什么,还是一样:

public Stream<LocalDateTime> stream() {
    return Stream.iterate(startDate, d -> d.plusMinutes(1))
                 .limit(ChronoUnit.MINUTES.between(startDate, endDate) + 1);
}

关于Java 8 LocalDateTime - 如何获取两个日期之间的所有时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48548117/

相关文章:

java - 哪个选项适合替代 Java Applet?

java - 如何替换已弃用的方法 Date.setHours(int)?

java - 如何使用java流对字段进行分组并创建摘要

java - 使用reduce函数时返回第一个元素

java - 如何在 anyMatch() java 8 流中应用复合 BiPredicate

Java & Tomcat : Severe Error starting obfuscated app w/hibernate inside

java - Spring Boot 2.4.0 版本中 CORS 策略的更改

java - 你应该在 Java 中扩展 ArrayList吗

python - 如何对日期时间或日期对象列表进行排序?

javascript - 授权特定字符的日期选择器字段