其他分享
首页 > 其他分享> > 封装 时间工具类

封装 时间工具类

作者:互联网

前言

工作开发中对时间类型 Date 和 LocalDateTime 时间类型处理蛮多的,所以自己封装了一个工具类

目录:

public class DateTimeUtil {

    public static final String DEFAULT_FORMAT_DATE = "yyyy-MM-dd HH:mm:ss";
    public static final String FORMAT_YMD = "yyyyMMdd";
    public static final String FORMAT_YMDHM = "yyyyMMddHHmm";
    public static final String DATE_FORMAT = "yyyy-MM-dd";
    public static final String FORMAT_YMDHMS = "yyyyMMddHHmmss";


    /**
     * Date类型的str 转 时间戳
     * @param format "yyyy-MM-dd HH:mm:ss:SSS"或"yyyy-MM-dd HH:mm:ss"。
     * @return 返回文本信息的日期对应的格林威治标准时间(1970年1月1日00:00:00.000)的偏移量,单位是毫秒。 1秒=1000毫秒。
     */
    public static long dateTimeParse(String datetime, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            Date date = sdf.parse(datetime);
            return date.getTime();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return 0;
    }

    /**
     * Date转string 字符串
     *
     * @param date      Date
     * @param formatStr 格式
     * @return
     */
    public static String formatDateToString(Date date, String formatStr) {
        return (new SimpleDateFormat((formatStr == null ? DEFAULT_FORMAT_DATE : formatStr))).format(date);
    }

    /**
     * localDate 转 string
     *
     * @param date
     * @param formatStr
     * @return
     */
    public static String formatLocalDateToString(LocalDate date, String formatStr) {
        DateTimeFormatter fmt = DateTimeFormatter.ofPattern(formatStr == null ? "yyyy-MM-dd" : formatStr);
        return date.format(fmt);
    }

    /**
     * String 转 LocalDate 
     *
     * @param dateStr
     * @param formatStr
     * @return
     */
    public static LocalDate formatStringToLocalDate(String dateStr, String formatStr) {
        DateTimeFormatter fmt = DateTimeFormatter.ofPattern(formatStr == null ? "yyyy-MM-dd" : formatStr);
        return LocalDate.parse(dateStr, fmt);
    }

    /**
     * String 转 Date
     *
     * @param dateStr   时间字符串
     * @param formatStr 格式
     * @return
     */
    public static Date formatStringToDate(String dateStr, String formatStr) throws ParseException {
        return (new SimpleDateFormat((formatStr == null ? DEFAULT_FORMAT_DATE
                : formatStr))).parse(dateStr);
    }

    /**
     * 时间戳转 Date 类型:   1631513214500
     *
     * @param time
     * @return
     */
    public static Date stringStamp2Date(String time) {
        Long longTime = Long.valueOf(time);
        Date date = new Date(longTime);
        return date;
    }

    /**
     * 比较两个时间,如果endtime晚于begintime,则返回true,否则返回false
     *
     * @param beginTime
     * @param endTime
     * @return
     */
    public static boolean beginTimeisBeforeEndTime(String beginTime, String endTime) {
        long begin = dateTimeParse(beginTime, DEFAULT_FORMAT_DATE);
        long end = dateTimeParse(endTime, DEFAULT_FORMAT_DATE);
        return end > begin;
    }

    public static boolean beginTimeisBeforeEndTime(Date beginTime, Date endTime) {
        long begin = beginTime.getTime();
        long end = endTime.getTime();
        return end > begin;
    }

    /**
     * 比较两个时间,如果endtime晚于begintime,则返回true,否则返回false
     *
     * @param beginTime
     * @param endTime
     * @return
     */
    public static boolean beginTimeBeforeEndTime(LocalDateTime beginTime, LocalDateTime endTime) {
        return beginTime.isBefore(endTime);
    }

    /**
     * string转date加日期
     *
     * @param dateStr 时间字符串
     * @param daynum  天数
     * @return
     */
    public static Date formatStringToDateAddDay(String dateStr, Integer daynum) throws ParseException {
        if (dateStr.length() <= SystemConstants.DATE_LENGTH) {
            dateStr = dateStr + " 00:00:00";
        } else {
            return (new SimpleDateFormat(DEFAULT_FORMAT_DATE)).parse(dateStr);
        }
        SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_FORMAT_DATE);
        Calendar calendar = new GregorianCalendar();
        Date date = sdf.parse(dateStr);
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, daynum);
        return calendar.getTime();
    }

    /**
     * 时间往后推迟 num 日/月/年
     *
     * @param dateStr 时间
     * @param num     数量
     * @param type    1:日  2:月 3:年
     * @return
     */
    public static Date dateDelayDayOrMonthOrYear(Date dateStr, Integer num, Integer type) {
        Calendar calendar = new GregorianCalendar();
        Date date = dateStr;
        calendar.setTime(date);
        switch (type) {
            case 1:
                calendar.add(Calendar.DATE, num);
                break;
            case 2:
                calendar.add(Calendar.MONTH, num);
                break;
            case 3:
                calendar.add(Calendar.YEAR, num);
                break;
        }
        return calendar.getTime();
    }


    /**
     * 字符串日志转为LocalDateTime格式
     * 不传或者无法转换时返回当前时间
     *
     * @param dateStr 日期字符串
     * @return
     */
    public static LocalDateTime strToLocalDateTime(String dateStr) {
        if (StringUtils.isBlank(dateStr)) {
            return LocalDateTime.now();
        }
        try {
            return LocalDateTime.parse(dateStr, DateTimeFormatter.ofPattern(DEFAULT_FORMAT_DATE));
        } catch (Exception ignored) {
        }
        return LocalDateTime.now();
    }

    /**
     * LocalDateTime 转为string
     *
     * @param time
     * @return
     */
    public static String localDateTimeToStr(LocalDateTime time) {
        if (time == null) {
            return null;
        }
        try {
            DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            return df.format(time);
        } catch (Exception ignored) {

        }
        return null;
    }

    /**
     * LocalDateTime 转 Date
     *
     * @param time
     * @return
     */
    public static Date localDateTimeToDate(LocalDateTime time) {
        Date date = null;
        if (time != null) {
            String localTimeStr = localDateTimeToStr(time);
            try {
                date = formatStringToDate(localTimeStr, "yyyy-MM-dd HH:mm:ss");
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        return date;
    }
}

标签:return,String,param,时间,dateStr,Date,封装,工具,public
来源: https://blog.csdn.net/weixin_43582499/article/details/120649083