Java获取两个字符串时间段内的每一秒字符串形式不用循环
时间: 2023-09-17 07:08:50 浏览: 94
你可以使用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<String> seconds = Stream.iterate(start, time -> time.plusSeconds(1))
.limit(ChronoUnit.SECONDS.between(start, end))
.map(formatter::format)
.collect(Collectors.toList());
System.out.println(seconds);
}
}
```
在此示例中,我们首先将字符串时间戳解析为LocalDateTime对象,使用DateTimeFormatter.ofPattern方法指定时间戳的格式。
然后,我们使用Java 8中的Stream.iterate方法来创建一个无限的时间戳流。我们从开始时间开始,每次递增一秒,直到无限流达到一个条件为止。在此示例中,我们设置流的大小为时间段的秒数,这可以通过ChronoUnit.SECONDS.between方法来计算。
接下来,我们使用map方法将LocalDateTime对象转换为格式化后的字符串形式,使用collect方法将生成的字符串流转换为一个列表,并将其打印出来以验证输出是否正确。
阅读全文