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());
}
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交