DateFormatUtil.java 4.54 KB
package com.template.utils;

import com.baomidou.mybatisplus.core.toolkit.StringUtils;

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

/**
 * Date格式工具
 *
 * @author DengMin
 * @date 2020/08/03
 **/
public class DateFormatUtil {

    public final static String FMT_sdf14_L = "yyyy/MM/dd HH:mm:ss";
    public final static String FMT_sdf_yMd = "yyyy/MM/dd";
    public final static String FMT_sdf_Hm = "H:mm";
    public final static String cron = "s m H d M ? yyyy";

    /**
     * Date转String,自定义格式
     *
     * @param date
     * @param pattern
     * @return
     */
    public static String format(Date date, String pattern) {
        try {
            if (date == null) {
                return null;
            }

            SimpleDateFormat sdf = new SimpleDateFormat(pattern);
            return sdf.format(date);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * String转Date,自定义格式
     *
     * @param date
     * @param pattern
     * @return
     */
    public static Date parse(String date, String pattern) {
        try {
            if (StringUtils.isBlank(date)) {
                return null;
            }

            SimpleDateFormat sdf = new SimpleDateFormat(pattern);
            return sdf.parse(date);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * LocalDate转Date
     *
     * @param localDate
     * @return
     */
    public static Date localDateToDate(LocalDate localDate) {
        if (localDate == null) {
            return null;
        }

        ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());
        return Date.from(zonedDateTime.toInstant());
    }

    /**
     * LocalDate转String
     *
     * @param localDate
     * @return
     */
    public static String localDateToString(LocalDate localDate) {
        if (localDate == null) {
            return null;
        }

        ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());
        return format(Date.from(zonedDateTime.toInstant()), FMT_sdf_yMd);
    }

    public static Date localDateTimeToDate(LocalDateTime localDateTime) {
        if (localDateTime == null) {
            return null;
        }

        return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
    }

    /**
     * date转localDate
     *
     * @param date
     * @return
     */
    public static LocalDate dateTOLocalDate(Date date) {
        if (date == null) {
            return null;
        }
        return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
    }

    /**
     * String转LocalDate
     *
     * @param date
     * @return
     */
    public static LocalDate localDateParse(String date) {
        if (StringUtils.isBlank(date)) {
            return null;
        }
        return LocalDate.parse(date);
    }

    /**
     * 时间戳转LocalDate
     *
     * @param timestamp
     * @return
     */
    public static LocalDate timestampTOLocalDate(Long timestamp) {
        return Instant.ofEpochMilli(timestamp).atZone(ZoneOffset.ofHours(0)).toLocalDate();
    }

    /**
     * 时间字符串转Cron
     *
     * @param date
     * @return
     */
    public static String getCron(String date) {
        try {
            Date d = parse(date, FMT_sdf14_L);
            SimpleDateFormat sdf = new SimpleDateFormat(cron);
            return sdf.format(d);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 时间戳转日期字符串
     *
     * @param timestamp 时间戳
     * @return 日期字符串
     * @author ALiang
     */
    public static String timestampToDateString(Long timestamp) {
        Date date = new Date(timestamp);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(FMT_sdf14_L);
        return simpleDateFormat.format(date);
    }

    /**
     * Date转LocalTime
     *
     * @param date
     * @return
     */
    public static LocalTime dateToLocalTime(Date date) {
        Instant instant = date.toInstant();
        ZoneId zoneId = ZoneId.systemDefault();
        LocalTime localTime = instant.atZone(zoneId).toLocalTime();
        return localTime;
    }

    public static LocalDateTime dateToLocalDateTime(Date date) {
        Instant instant = date.toInstant();
        ZoneId zoneId = ZoneId.systemDefault();
        LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
        return localDateTime;
    }
}