DataU时间获取转换工具类

package com.chengze.common.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @author huangyalou
 * @date 2021/9/8 11:52
 * @desc  时间工具类
 */
public class DateUtil {

    public static final String DATE_FORMAT = "yyyy-MM-dd";
    public static final String DATE_FORMAT_NO_SEPARTOR = "yyyyMMdd";
    public static final String DATETIME_FORMAT_YY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
    public static final String YYYYMMDDHHMMS = "yyyyMMddHHmmss";
    /**
     * 防止高并发先 DateFormat的不安全造成时间格式化问题
     */
    private static ThreadLocal<DateFormat> DATE_LOCAL = new ThreadLocal<DateFormat>();

    /**
     * @return String 格式化后的日期
     * @Description: 格式化日期,默认yyyy-MM-dd HH:mm:ss格式
     * @Param date 日期
     * @author li.ml
     */
    public static String format(Date date) {
        return format(date, DATETIME_FORMAT_YY_MM_DD_HH_MM_SS);
    }

    /**
     * 按照指定的形式格式化化日期
     *
     * @param date          日期对象
     * @param formatPattern 指定的日期格式化形式
     * @return
     */
    public static String format(Date date, String formatPattern) {
        if (date == null) {
            return null;
        }

        DATE_LOCAL.set(new SimpleDateFormat(formatPattern));

        return DATE_LOCAL.get().format(date);
    }

    /**
     * @return Date
     * @Description: 获得当前日期 加上 N天 之后的日期
     * @Param date 日期
     * @Param n 天数
     * @author li.ml
     */
    public static Date addDays(Date date, int n) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.DATE, n);
        return cal.getTime();
    }

    /**
     * @param oldDate
     * @param n       多少分钟
     * @return
     * @description 获得当前日期 加上 N分钟 之后的日期
     * @author wuhoujian
     */
    public static Date addMinutes(Date oldDate, int n) {
        Date newDate = null;
        Calendar calOld = Calendar.getInstance();
        calOld.setTime(oldDate);
        int minute = calOld.get(Calendar.MINUTE);
        Calendar calNew = Calendar.getInstance();
        calNew.setTime(oldDate);
        calNew.set(Calendar.MINUTE, minute + n);
        newDate = calNew.getTime();
        return newDate;
    }

    /**
     * @param oldDate
     * @param n       多少秒
     * @return
     * @description 获得当前日期 加上 N秒 之后的日期
     * @author wuhoujian
     */
    public static Date addSeconds(Date oldDate, int n) {
        Date newDate = null;
        Calendar calOld = Calendar.getInstance();
        calOld.setTime(oldDate);
        int second = calOld.get(Calendar.SECOND);
        Calendar calNew = Calendar.getInstance();
        calNew.setTime(oldDate);
        calNew.set(Calendar.SECOND, second + n);
        newDate = calNew.getTime();
        return newDate;
    }

    /**
     * @param oldDate
     * @param n       多少毫秒
     * @return
     * @description 获得当前日期 加上 N毫秒 之后的日期
     * @author wuhoujian
     */
    public static Date addMillSeconds(Date oldDate, int n) {
        Date newDate = null;
        Calendar calOld = Calendar.getInstance();
        calOld.setTime(oldDate);
        int millSecond = calOld.get(Calendar.MILLISECOND);
        Calendar calNew = Calendar.getInstance();
        calNew.setTime(oldDate);
        calNew.set(Calendar.MILLISECOND, millSecond + n);
        newDate = calNew.getTime();
        return newDate;
    }

    public static Date stringToDate(String dateStr, String formatter) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatter);
        try {
            return simpleDateFormat.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static Date stringToDate(String dateStr) {

      return stringToDate(dateStr,DATETIME_FORMAT_YY_MM_DD_HH_MM_SS);
    }

    /**
     *
     * @param dateStr yyyy-MM-dd
     * @return
     */
    public static Date stringToDate2(String dateStr) {

        return stringToDate(dateStr,DATE_FORMAT);
    }

    /**
     * 获取当前的0点0时0分
     *
     * @return date
     */
    public static Date getTodayStartTime(Date date) {
        Calendar todayStart = Calendar.getInstance();
        todayStart.setTime(date);
        todayStart.set(Calendar.HOUR_OF_DAY, 0);
        todayStart.set(Calendar.MINUTE, 0);
        todayStart.set(Calendar.SECOND, 0);
        todayStart.set(Calendar.MILLISECOND, 0);
        return todayStart.getTime();
    }

    /**
     * 设置时间
     *
     * @return date
     */
    public static Date setTime(Date date,Date date1) {
        Calendar calendar1 = Calendar.getInstance();
        calendar1.setTime(date1);
        Calendar todayStart = Calendar.getInstance();
        todayStart.setTime(date);
        todayStart.set(Calendar.HOUR_OF_DAY, calendar1.get(Calendar.HOUR_OF_DAY));
        todayStart.set(Calendar.MINUTE, calendar1.get(Calendar.MINUTE));
        todayStart.set(Calendar.SECOND, calendar1.get(Calendar.SECOND));
        todayStart.set(Calendar.MILLISECOND, calendar1.get(Calendar.MILLISECOND));
        return todayStart.getTime();
    }

    /**
     * 返回指定日期是哪一天 如main方法: System.out.println(getDay(new Date())); 2021-11-25 结果: 25
     *
     * @param date
     * @return
     */
    public static int getDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(5);
    }

    //请求时间 格式:YYYYMMDDhhmmss
    public static String getCurrentTime() {
        return new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值