【代码】Java中LocalDateTime和Date互转

2026-10-10 18:35:42  阅读 9 次 评论 0 条

直接上代码

import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Date;

public class DateUtil {

    private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";//默认日期时间格式
    private static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";//默认日期格式


    /**
     * LocalDateTime 转 LocalDate
     * 直接调用 toLocalDate 就可以
     *
     * @param localDateTime LocalDateTime 对象
     * @return 转换后的 LocalDate 对象
     */
    public static LocalDate localDateTimeToLocalDate(LocalDateTime localDateTime) {
        return localDateTime.toLocalDate();
    }

    /**
     * LocalDateTime 转 Date
     * @param localDateTime LocalDateTime 对象
     * @return 转换后的 Date 对象
     */
    public static Date localDateTimeToDate(LocalDateTime localDateTime){
        //获取系统默认时区
        ZoneId zoneId = ZoneId.systemDefault();
        //时区的日期和时间
        ZonedDateTime zonedDateTime = localDateTime.atZone(zoneId);
        //获取时刻并返回
        return Date.from(zonedDateTime.toInstant());
    }

    /**
     * LocalDate 转 LocalDateTime
     * 从当天0点开始
     *
     * @param localDate LocalDate 对象
     * @return 转换后的 LocalDateTime 对象
     */
    public static LocalDateTime localDateToLocalDateTime(LocalDate localDate){
        return localDate.atStartOfDay();
    }


    /**
     * LocalDate 转 Date
     * @param localDate LocalDate对象
     * @return 转换后的Date对象
     */
    public static Date localDateToDate(LocalDate localDate){
        ZoneId zoneId = ZoneId.systemDefault();
        ZonedDateTime zonedDateTime = localDate.atStartOfDay(zoneId);
        return Date.from(zonedDateTime.toInstant());
    }


    /**
     * Date 转 LocalDateTime
     * @param date Date对象
     * @return 转换后的LocalDateTime对象
     */
    public static LocalDateTime dateToLocalDateTime(Date date){
        ZoneId zoneId = ZoneId.systemDefault();
        //先转ZonedDateTime
        ZonedDateTime zonedDateTime = date.toInstant().atZone(zoneId);
        //再去转LocalDateTime
        return zonedDateTime.toLocalDateTime();
    }

    /**
     * date 转 LocalDate
     * @param date Date对象
     * @return 转换后的LocalDate对象
     */
    public static LocalDate dateToLocalDate(Date date){
        ZoneId zoneId = ZoneId.systemDefault();
        ZonedDateTime zonedDateTime = date.toInstant().atZone(zoneId);
        return zonedDateTime.toLocalDate();
    }


    /**
     * LocalDate转字符串
     * @param date LocalDate对象
     * @return 转换后的字符串
     */
    public static String toString(LocalDate date){
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_PATTERN);//LocalDate只支持日期部分
        return date.format(formatter);
    }

    /**
     * LocalDate转字符串
     * @param date LocalDate对象
     * @param pattern 格式化字符串
     * @return 转换后的字符串
     */
    public static String toString(LocalDate date,String pattern){
        if(pattern==null || pattern.trim().isEmpty()){
            pattern=DEFAULT_DATE_PATTERN;//LocalDate只支持日期部分
        }
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
        return date.format(formatter);
    }


    /**
     * LocalDateTime转字符串
     * @param date LocalDateTime对象
     * @return 转换后的字符串
     */
    public static String toString(LocalDateTime date){
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_PATTERN);
        return date.format(formatter);
    }
    /**
     * LocalDateTime转字符串
     * @param date LocalDateTime对象
     * @param pattern 格式化字符串
     * @return 转换后的字符串
     */
    public static String toString(LocalDateTime date,String pattern){
        if(pattern==null || pattern.trim().isEmpty()){
            pattern=DEFAULT_PATTERN;
        }
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
        return date.format(formatter);
    }


    /**
     * Date转字符串
     * @param date Date对象
     * @return 转换后的字符串
     */
    public static String toString(Date date){
        SimpleDateFormat formatter = new SimpleDateFormat(DEFAULT_PATTERN);
        return formatter.format(date);
    }
    /**
     * Date转字符串
     * @param date Date对象
     * @param pattern 格式化字符串
     * @return 转换后的字符串
     */
    public static String toString(Date date,String pattern){
       if(pattern==null || pattern.trim().isEmpty()){
           pattern=DEFAULT_PATTERN;
       }
        SimpleDateFormat formatter = new SimpleDateFormat(pattern);
        return formatter.format(date);
    }

}



微信扫码查看本文
本文地址:https://www.yangguangdream.com/?id=2277
版权声明:本文为原创文章,版权归 编辑君 所有,欢迎分享本文,转载请保留出处!
NEXT:已经是最新一篇了

发表评论


表情

还没有留言,还不快点抢沙发?