在做项目时总要写日期的条件查询,要查询某天里有关的所有数据!!
使用JDK1.8 的新特性 LocalDateTime 来操作!
LocalDateTime类的ofInstant(Instant Instant,ZoneId zone)方法用于使用Instant和区域ID创建LocalDateTime的实例。
LocalDateTime的计算遵循以下步骤。
- 区域Id和Instant用于从UTC /格林威治获取偏移量,因为每个实例只能有一个有效偏移量。
- 最后,使用该瞬间和所获得的偏移量来计算本地日期时间。
获取某天最小的时间
public Date getMintDay(Date date) {
/**
*
* ofInstant 方法有俩个参数,第一个是 Instant类型的,表示传递给创建localdatetime的瞬间。
* 可以获取到某天的的日期和时间并返回 LocalDateTime类型
*
* 第二个参数是ZoneId类型,代表用于创建偏移量的时区 ,表示区域id
*
*/
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());
// 通过LocalDateTime的 with方法设置某天的最小值和最大值!!
LocalDateTime minDateTime = localDateTime.with(LocalTime.MIN);
// 格式化日期
Date fromDate = Date.from(minDateTime.atZone(ZoneId.systemDefault()).toInstant());
return fromDate;
}
获取某天最大的时间则修改 LocalTime.MAX 方法即可
public Date getMaxDay(Date date) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());
LocalDateTime maxDateTime = localDateTime.with(LocalTime.MAX);
return Date.from(maxDateTime.atZone(ZoneId.systemDefault()).toInstant());
}
结果: