基于LocalDateTime 实现的日期解析工具类

2020-09-27  本文已影响0人  码而优则仕
package cn.com.yuns.deploy.utils;

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;

/**
 * @author wsq
 * @version BaseLocalDateFormatUtils.java  2020/8/27  上午9:32 下午
 */
public class BaseLocalDateFormatUtils {

    /**
     * Date转LocalDateTime
     *
     * @param date Date
     * @return LocalDateTime
     */
    public static LocalDateTime dateToLocalDateTime(Date date) {
        try {
            Instant instant = date.toInstant();
            ZoneId zoneId = ZoneId.systemDefault();
            return instant.atZone(zoneId).toLocalDateTime();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * LocalDateTime转Date
     *
     * @param localDateTime LocalDateTime
     * @return Date
     */
    public static Date localDateTimeToDate(LocalDateTime localDateTime) {
        try {
            ZoneId zoneId = ZoneId.systemDefault();
            ZonedDateTime zdt = localDateTime.atZone(zoneId);
            return Date.from(zdt.toInstant());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

package cn.com.yuns.deploy.utils;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;

public class LocalDateTimeUtils extends BaseLocalDateFormatUtils implements
        DatePattern {

    private LocalDateTimeUtils() {

    }

    /**
     * 解析yyyy-MM-dd'T'HH:mm:ss.SSSZ
     *
     * @param date
     * @return
     */
    public static Date getByFullStringTimeZone(String date) {
        return safeParse(date, FULL_FORMAT_WITH_TIMEZONE);
    }

    /**
     * 解析yyyy
     *
     * @param date
     * @return
     */
    public static Date getByYearOnlyString(String date) {
        return safeParse(date, YEAR_ONLY_FORMAT);
    }

    /**
     * 解析yyyy-MM
     *
     * @param date
     * @return
     */
    public static Date getByMonthOnlyString(String date) {
        return safeParse(date, MONTH_ONLY_FORMAT);
    }

    /**
     * 解析yyyyMM
     *
     * @param date
     * @return
     */
    public static Date getByMothAndYear(String date) {
        return safeParse(date, COMPACT_MONTH_ONLY);
    }

    /**
     * 解析yyyyMM
     *
     * @param date
     * @return
     */
    public static Date getByCompactMonthOnlyString(String date) {
        return safeParse(date, COMPACT_MONTH_ONLY);
    }

    /**
     * 解析yyyy-MM-dd
     *
     * @param date
     * @return
     */
    public static Date getByDateOnlyString(String date) {
        return safeParse(date, DATE_ONLY_FORMAT);
    }

    /**
     * 解析yyyy-MM-dd HH:mm:ss
     *
     * @param date
     * @return
     */
    public static Date getByFullString(String date) {
        return safeParse(date, FULL_FORMAT);
    }

    /**
     * 解析yyyy-MM-dd HH:mm
     *
     * @param date
     * @return
     */
    public static Date getByMinutesOnly(String date) {
        return safeParse(date, MINUTES_ONLY_FORMAT);
    }

    /**
     * 解析yyyyMMddHHmmss
     *
     * @param date
     * @return
     */
    public static Date getByCompactionFullString(String date) {
        return safeParse(date, DATE_COMPACTION_FULL_FORMAT);
    }

    /**
     * 解析yyyy年MM月dd日
     *
     * @param date
     * @return
     */
    public static Date getByChineseDateOnlyString(String date) {
        return safeParse(date, CHINESE_DATE_ONLY_FORMAT);
    }

    /**
     * 解析yyyy年MM月dd日 HH时mm分ss秒
     *
     * @param date
     * @return
     */
    public static Date getByChineseFullString(String date) {
        return safeParse(date, CHINESE_FULL_FORMAT);
    }

    /**
     * 解析
     *
     * @param date    日期
     * @param pattern 格式
     * @return
     */
    private static Date safeParse(String date, String pattern) {
        if (date == null || pattern == null) {
            return null;
        }
        LocalDateTime localDateTime = LocalDateTime.parse(date, DateTimeFormatter.ofPattern(pattern));
        return localDateTimeToDate(localDateTime);
    }

    public static void main(String args[]) {
        System.out.println(getByChineseFullString("2020年08月27日 21时41分53秒"));
    }

}

上一篇 下一篇

猜你喜欢

热点阅读