Java8 LocalDate/Time/DateTime最全工具类

概述

LocalDate、LocalTime、LocalDateTime的使用请参考:
https://blog.csdn.net/Saintmm/article/details/120193455

代码

废话不多说,直接上代码。

package com.saint.base.util;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Date;

/**
 * 本地日期和时间格式化工具
 *
 * @author Saint
 * @version 1.0
 * @createTime 2021-01-08 7:00
 */
public class LocalDateUtil {
    private static final Logger LOGGER = LoggerFactory.getLogger(LocalDateUtil.class);

    /**
     * String类型转LocalDateTime类型
     *
     * @param date    日期字符串
     * @param pattern 日期格式
     * @return LocalDateTime类型
     */
    public static LocalDateTime stringToLocalDateTime(String date, String pattern) {
        if (pattern == null || "".equals(pattern)) {
            return LocalDateTime.of(1900, 1, 1, 0, 0, 0);
        }
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
        return LocalDateTime.parse(date, formatter);
    }

    /**
     * String类型转LocalDate类型
     *
     * @param date    日期字符串
     * @param pattern 日期格式
     * @return LocalDate类型
     */
    public static LocalDate stringToLocalDate(String date, String pattern) {
        if (pattern == null || "".equals(pattern)) {
            return LocalDate.of(1900, 1, 1);
        }
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
        return LocalDate.parse(date, formatter);
    }

    /**
     * String类型转LocalTime类型
     *
     * @param date    时间字符串
     * @param pattern 时间格式
     * @return LocalTime类型
     */
    public static LocalTime stringToLocalTime(String date, String pattern) {
        if (pattern == null || "".equals(pattern)) {
            return LocalTime.of(0, 0, 0);
        }
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
        return LocalTime.parse(date, formatter);
    }

    /**
     * LocalDateTime类型转String类型
     *
     * @param localDateTime localDateTime类型日期
     * @param pattern       字符串格式
     * @return String类型
     */
    public static String localDateTimeToString(LocalDateTime localDateTime, String pattern) {
        if (pattern == null || "".equals(pattern)) {
            return "1900-01-01T00:00:00.000";
        }
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
        return localDateTime.format(formatter);
    }

    /**
     * LocalDate类型转String类型
     *
     * @param localDate localDate类型日期
     * @param pattern   字符串格式
     * @return String类型
     */
    public static String localDateToString(LocalDate localDate, String pattern) {
        if (pattern == null || "".equals(pattern)) {
            return "1900-01-01";
        }
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
        return localDate.format(formatter);
    }

    /**
     * Date类型转LocalDateTime类型
     *
     * @param date Date类型日期
     * @return LocalDateTime类型
     */
    public static LocalDateTime dateToLocalDateTime(Date date) {
        if (date == null) {
            return LocalDateTime.of(1900, 1, 1, 0, 0, 0);
        }
        Instant instant = date.toInstant();
        // 获取本地时区
        ZoneId zoneId = ZoneId.systemDefault();
        return LocalDateTime.ofInstant(instant, zoneId);
    }

    /**
     * Date类型转LocalDate类型
     *
     * @param date Date类型日期
     * @return LocalDate类型
     */
    public static LocalDate dateToLocalDate(Date date) {
        if (date == null) {
            return LocalDate.of(1900, 1, 1);
        }
        LocalDateTime localDateTime = dateToLocalDateTime(date);
        return localDateTime.toLocalDate();
    }

    /**
     * Date类型转LocalTime类型
     *
     * @param date Date类型日期
     * @return LocalTime类型
     */
    public static LocalTime dateToLocalTime(Date date) {
        if (date == null) {
            return LocalTime.of(0, 0, 0);
        }
        LocalDateTime localDateTime = dateToLocalDateTime(date);
        return localDateTime.toLocalTime();
    }

    /**
     * LocalDateTime类型转Date类型
     *
     * @param localDateTime LocalDateTime类型时间
     * @return Date类型
     */
    public static Date localDateTimeToDate(LocalDateTime localDateTime) {
        if (localDateTime == null) {
            localDateTime = LocalDateTime.of(1900, 1, 1, 0, 0, 0);
        }
        ZoneId zoneId = ZoneId.systemDefault();
        Instant instant = localDateTime.atZone(zoneId).toInstant();
        return Date.from(instant);
    }

    /**
     * LocalDate类型转Date类型
     *
     * @param localDate LocalDate类型日期
     * @return Date类型
     */
    public static Date localDateToDate(LocalDate localDate) {
        if (localDate == null) {
            localDate = LocalDate.of(1900, 1, 1);
        }
        ZoneId zoneId = ZoneId.systemDefault();
        Instant instant = localDate.atStartOfDay().atZone(zoneId).toInstant();
        return Date.from(instant);
    }

    /**
     * LocalTime类型 + LocalDate类型 转Date类型
     *
     * @param localDate LocalDate类型日期
     * @param localTime LocalTime类型时间
     * @return Date类型
     */
    public static Date localTimeToDate(LocalDate localDate, LocalTime localTime) {
        if (localTime == null) {
            return localDateToDate(localDate);
        }
        LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
        return localDateTimeToDate(localDateTime);
    }

    public static LocalDateTime addMonth(LocalDateTime time, int interval) {
        return time.plus(interval, ChronoUnit.MONTHS);
    }

    public static LocalDateTime addDay(LocalDateTime time, int interval) {
        return time.plus(interval, ChronoUnit.DAYS);
    }

    public static LocalDateTime addHour(LocalDateTime time, int interval) {
        return time.plus(interval, ChronoUnit.HOURS);
    }

    public static LocalDateTime addMinute(LocalDateTime time, int interval) {
        return time.plus(interval, ChronoUnit.MINUTES);
    }

    public static LocalDateTime addSecond(LocalDateTime time, int interval) {
        return time.plus(interval, ChronoUnit.SECONDS);
    }

    /**
     * 获取两个时间的时间间隔,time2-time1
     *
     * @param time1
     * @param time2
     */
    public static long getIntervalMillisecond(LocalDateTime time1, LocalDateTime time2) {
        return Duration.between(time1, time2).toMillis();
    }

}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秃秃爱健身

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值