Java获取两个字符串时间段内的每一秒不用循环
时间: 2023-12-21 07:05:11 浏览: 80
你可以使用Java 8中的DateTime API和流操作来获取两个字符串时间段内的每一秒的集合,而不使用循环。以下是一个示例代码:
```java
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Example {
public static void main(String[] args) {
String startStr = "2021-01-01 00:00:00";
String endStr = "2021-01-01 00:00:10";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime start = LocalDateTime.parse(startStr, formatter);
LocalDateTime end = LocalDateTime.parse(endStr, formatter);
List<LocalDateTime> seconds = Stream.iterate(start, time -> time.plusSeconds(1))
.limit(ChronoUnit.SECONDS.between(start, end))
.collect(Collectors.toList());
System.out.println(seconds);
}
}
```
在此示例中,我们首先将字符串时间戳解析为LocalDateTime对象,使用DateTimeFormatter.ofPattern方法指定时间戳的格式。
然后,我们使用Java 8中的Stream.iterate方法来创建一个无限的时间戳流。我们从开始时间开始,每次递增一秒,直到无限流达到一个条件为止。在此示例中,我们设置流的大小为时间段的秒数,这可以通过ChronoUnit.SECONDS.between方法来计算。
最后,我们使用collect方法将生成的时间戳流转换为一个列表,并将其打印出来以验证输出是否正确。
阅读全文