Date和LocalDateTime的相互转换,字符串转LocalDateTime,求日期最晚时间、最早时间

导包如下

import java.time.*;
import java.time.format.DateTimeFormatter;

以下是转化代码

一、Date转LocalDateTime

    public static LocalDateTime toLocalDateTime(Date date) {
        // 方法一
        LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        // 方法二
        return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
    }

二、LocalDateTime转Date

    public static Date toDate(LocalDateTime localDateTime) {
        return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
    }

三、时间字符串转LocalDateTime

    /**
     * date string to LocalDateTime
     * @param dateStr eg: "2020-08-22 10:30:50"
     * @param pattern eg: "yyyy-MM-dd HH:mm:ss"
     * @return LocalDateTime
     */
    public static LocalDateTime toLocalDateTime(String dateStr, String pattern) {
        return LocalDateTime.parse(dateStr, DateTimeFormatter.ofPattern(pattern));
    }

四、Date转OffsetDateTime

    public static OffsetDateTime toOffsetDateTime(Date date) {
        // 方法一
        OffsetDateTime offsetDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toOffsetDateTime();
        // 方法二
        return ZonedDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).toOffsetDateTime();
    }
    
    // 测试
    public static void test(){
        OffsetDateTime offsetDateTime = toOffsetDateTime(new Date());
        // 当前最后时间 23:59:59
        OffsetDateTime with = offsetDateTime.with(LocalTime.MAX);
        // 当前开始时间 00:00:00
        OffsetDateTime  endDateTime = offsetDateTime.with(LocalTime.MIN);
    }

五、OffsetDateTime转Date

  public static Date toDate(OffsetDateTime offsetDateTime){
        return Date.from(offsetDateTime.atZoneSameInstant(ZoneId.systemDefault()).toInstant());
    }

六、LocalDateTime转OffsetDateTime

    public static LocalDateTime toLocalDateTime(OffsetDateTime offsetDateTime) {
        return LocalDateTime.ofInstant(offsetDateTime.atZoneSameInstant(ZoneId.systemDefault()).toInstant(), ZoneId.systemDefault());
    }

七、备注

1、LocalDateTime可以做日期的加减很方便
2、OffsetDateTime计算00:00:00及23:59:59很方便

你可能感兴趣的:(Java)