我想基于LocalDateTime按集合分组,但我只想获取小时,而不是分钟,秒...
.collect(Collectors.groupingBy(cp -> getUpdateLocalDate())
public LocalDate getUpdateLocalDate() {
return getUpdateDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
}
但是我还需要日期,例如:2018-10-12T09:00:00
,不仅是小时
答案 0 :(得分:5)
请注意,LocalDate
没有时区。而是从方法getUpdateLocalDate
返回LocalDateTime(可能也值得重命名),然后截断LocalDateTime实例。
.collect(Collectors.groupingBy(cp -> cp.getUpdateLocalDateTime().truncatedTo(ChronoUnit.HOURS));
答案 1 :(得分:4)
As said by Aomine,LocalDate
不包含任何时间信息,因此,您必须更改返回LocalDateTime
的方法。
public LocalDateTime getUpdateLocalDateTime() {
return getUpdateDate().toInstant()
.atZone(ZoneId.systemDefault()).toLocalDateTime();
}
然后,您可以按以下方式执行操作
.collect(Collectors.groupingBy(cp ->
cp.getUpdateLocalDateTime().truncatedTo(ChronoUnit.HOURS))