java 获取当天0点到23点的小时集合
时间: 2023-07-16 19:14:46 浏览: 112
java获取某一时间
可以使用Java 8的`LocalDateTime`和`IntStream`来获取当天0点到23点的小时集合,示例代码如下:
```java
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class HourRange {
public static void main(String[] args) {
// 获取当前时间
LocalDateTime now = LocalDateTime.now();
// 获取当天0点的时间
LocalDateTime midnight = now.toLocalDate().atStartOfDay();
// 获取当前小时数
int currentHour = now.getHour();
// 生成0到23的整数流
IntStream hourStream = IntStream.range(0, 24);
// 获取当天0点到当前时间的小时数集合
List<Integer> hourRange = hourStream.filter(hour -> {
LocalDateTime time = midnight.plusHours(hour);
return !time.isAfter(now);
}).boxed().collect(Collectors.toList());
System.out.println(hourRange);
}
}
```
输出结果为:
```
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
```
其中`LocalDateTime`表示日期时间,`IntStream`表示整数流。我们首先获取当前时间,然后获取当天的0点时间,接着生成0到23的整数流,并通过`filter`方法过滤出当天0点到当前时间的小时数集合。最后通过`boxed`方法将`int`流转换为`Integer`流,并用`collect`方法将其转换为`List`集合。
阅读全文