Date 与 LocalDateTime 互转
/**
* LocalDateTime 转 Date
*
* @param localDateTime
* @return
*/
public static Date convertLocalDateTimeToDate(LocalDateTime localDateTime) {
ZoneId zoneId = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zoneId).toInstant();
return Date.from(instant);
}
/**
* Date 转 LocalDateTime
*
* @param date
* @return
*/
public static LocalDateTime convertToLocalDateTime(Date date) {
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
return LocalDateTime.ofInstant(instant, zoneId);
}
Date 与 LocalDate 互转
/**
* LocalDate 转 Date
*
* @param localDate
* @return
*/
public static Date convertLocalDateToDate(LocalDate localDate) {
ZoneId zoneId = ZoneId.systemDefault();
Instant instant = localDate.atStartOfDay().atZone(zoneId).toInstant();
return Date.from(instant);
}
/**
* LocalDate&LocalTime 转 Date
*
* @param localDate
* @param localTime
* @return
*/
public static Date convertLocalTimeToDate(LocalDate localDate, LocalTime localTime) {
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
Instant instant = localDateTime.atZone(zoneId).toInstant();
return Date.from(instant);
}
获取 Date 的当天开始时间
/**
* 获取date当天的开始日期
*
* @param date
* @return
*/
public static Date getFirstTimeOfDay(Date date) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
return Date.from(LocalDateTime.of(localDateTime.toLocalDate(), LocalTime.MIN).atZone(ZoneId.systemDefault()).toInstant());
}
获取 Date 的当天结束时间
/**
* 获取date当天的最后时间
*
* @param date
* @return
*/
public static Date getEndTimeOfDay(Date date) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
return Date.from(LocalDateTime.of(localDateTime.toLocalDate(), LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant());
}
获取date所属月份第一天
/**
* 获取date所属月份第一天
*
* @param date
* @return
*/
public static Date getFirstDayOfMonth(Date date) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
ZonedDateTime zonedDateTime = LocalDateTime.of(localDateTime.toLocalDate(), LocalTime.MIN).with(TemporalAdjusters.firstDayOfMonth()).atZone(ZoneId.systemDefault());
return Date.from(zonedDateTime.toInstant());
}
获取date所属月份最后一天
/**
* 获取date所属月份最后一天
*
* @param date
* @return
*/
public static Date getEndDayOfMonth(Date date) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
ZonedDateTime zonedDateTime = LocalDateTime.of(localDateTime.toLocalDate(), LocalTime.MAX).with(TemporalAdjusters.lastDayOfMonth()).atZone(ZoneId.systemDefault());
return Date.from(zonedDateTime.toInstant());
}
获取两个日期之间所有日期集合
/**
* 获取两个日期之间所有日期集合
*
* @param startDate
* @param endDate
* @return
*/
public static List<LocalDate> getDatesBetween(Date startDate, Date endDate) {
LocalDate localStartDate = convertToLocalDate(startDate);
LocalDate localEndDate = convertToLocalDate(endDate);
long numOfDaysBetween = ChronoUnit.DAYS.between(localStartDate, localEndDate) + 1;
return IntStream.iterate(0, i -> i + 1).limit(numOfDaysBetween).mapToObj(i -> localStartDate.plusDays(i)).collect(Collectors.toList());
}
date加上days后的日期
/**
* date加上days后的日期
*
* @param date
* @return date加上days后的日期
*/
public static Date plusDays(Date date, int days) {
LocalDate localDate = convertToLocalDate(date);
return convertLocalDateToDate(localDate.plusDays(days));
}