package com.whyc.util;
|
|
import java.text.SimpleDateFormat;
|
import java.util.Calendar;
|
import java.util.Date;
|
|
/**
|
* 日期处理工具类
|
* @Author xuzhongpei
|
* @Date 2023-11-16
|
* */
|
public class DateUtil {
|
|
/**ThreadLocal副本形式避免多线程中 数据安全问题*/
|
private static ThreadLocal<SimpleDateFormat> YYYY_MM_DD_HH_MM_SS = ThreadLocal.withInitial(()->new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"));
|
private static ThreadLocal<SimpleDateFormat> YYYY_MM_DD_HH_MM_SS2 = ThreadLocal.withInitial(()->new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss"));
|
private static ThreadLocal<SimpleDateFormat> YYYY_MM_DD_HH_MM_SS_UNION = ThreadLocal.withInitial(()->new SimpleDateFormat("yyyyMMddHHmmss"));
|
private static ThreadLocal<SimpleDateFormat> YYYY_MM_DD = ThreadLocal.withInitial(()->new SimpleDateFormat("yyyy-MM-dd"));
|
private static ThreadLocal<SimpleDateFormat> YYYY_MM_DD_UNION = ThreadLocal.withInitial(()->new SimpleDateFormat("yyyyMMdd"));
|
|
public static String format_YYYY_MM_DD_HH_MM_SS(Date date){
|
return YYYY_MM_DD_HH_MM_SS.get().format(date);
|
}
|
|
public static String format_YYYY_MM_DD_HH_MM_SS2(Date date){
|
return YYYY_MM_DD_HH_MM_SS2.get().format(date);
|
}
|
|
public static String format_YYYY_MM_DD_HH_MM_SS_UNION(Date date){
|
return YYYY_MM_DD_HH_MM_SS_UNION.get().format(date);
|
}
|
|
public static String YYYY_MM_DD(Date date){
|
return YYYY_MM_DD.get().format(date);
|
}
|
|
public static String format_YYYY_MM_DD_UNION(Date date){
|
return YYYY_MM_DD_UNION.get().format(date);
|
}
|
|
|
//获取指定年月的天数
|
public static int getDaysByYearMonth(int year, int month) {
|
|
Calendar a = Calendar.getInstance();
|
a.set(Calendar.YEAR, year);
|
a.set(Calendar.MONTH, month - 1);
|
a.set(Calendar.DATE, 1);
|
a.roll(Calendar.DATE, -1);
|
int maxDate = a.get(Calendar.DATE);
|
return maxDate;
|
}
|
|
//获取某年某月的起始和结束时间
|
//需要注意的是:月份是从0开始的,比如说如果输入5的话,实际上显示的是4月份的最后一天,千万不要搞错了哦
|
public static String getLastDayOfMonth(int year, int month) {
|
Calendar cal = Calendar.getInstance();
|
cal.set(Calendar.YEAR, year);
|
cal.set(Calendar.MONTH, month);
|
cal.set(Calendar.DAY_OF_MONTH,cal.getActualMaximum(Calendar.DATE));
|
return new SimpleDateFormat( "yyyy-MM-dd ").format(cal.getTime())+"23:59:59";
|
}
|
|
public static String getFirstDayOfMonth(int year, int month) {
|
Calendar cal = Calendar.getInstance();
|
cal.set(Calendar.YEAR, year);
|
cal.set(Calendar.MONTH, month);
|
cal.set(Calendar.DAY_OF_MONTH,cal.getMinimum(Calendar.DATE));
|
return new SimpleDateFormat( "yyyy-MM-dd ").format(cal.getTime())+"00:00:00";
|
}
|
//获取当前时间的年份
|
public static int getNowYear(){
|
Calendar ca = Calendar.getInstance();//得到一个Calendar的实例
|
ca.setTime(new Date()); //设置时间为当前时间
|
int year = ca.get(Calendar.YEAR);
|
//System.out.println(month);
|
return year;
|
}
|
//获取当前时间的月份
|
public static int getNowMonth(){
|
Calendar ca = Calendar.getInstance();//得到一个Calendar的实例
|
ca.setTime(new Date()); //设置时间为当前时间
|
int month = ca.get(Calendar.MONTH) + 1;
|
//System.out.println(month);
|
return month;
|
}
|
//获取当前时间的日期
|
public static int getNowDay(){
|
Calendar ca = Calendar.getInstance();//得到一个Calendar的实例
|
ca.setTime(new Date()); //设置时间为当前时间
|
int day = ca.get(Calendar.DAY_OF_MONTH);
|
//System.out.println(month);
|
return day;
|
}
|
//当前时间加上x小时
|
public static String getDateAdd(int minute){
|
Date date = new Date();
|
Calendar c = Calendar.getInstance();
|
c.setTime(date);
|
c.add(Calendar.MINUTE, minute);
|
return new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss").format(c.getTime());
|
}
|
|
//获取时间的年份
|
public static int getDateYear(Date date){
|
Calendar ca = Calendar.getInstance();//得到一个Calendar的实例
|
ca.setTime(date); //设置时间为当前时间
|
int year = ca.get(Calendar.YEAR);
|
//System.out.println(month);
|
return year;
|
}
|
//获取时间的月份
|
public static int getDateMonth(Date date){
|
Calendar ca = Calendar.getInstance();//得到一个Calendar的实例
|
ca.setTime(date); //设置时间为当前时间
|
int month = ca.get(Calendar.MONTH) + 1;
|
//System.out.println(month);
|
return month;
|
}
|
//获取时间的日期
|
public static int getDateDay(Date date){
|
Calendar ca = Calendar.getInstance();//得到一个Calendar的实例
|
ca.setTime(date); //设置时间为当前时间
|
int day = ca.get(Calendar.DAY_OF_MONTH);
|
//System.out.println(month);
|
return day;
|
}
|
//当前时间加上x小时
|
public static Date getDateAdd(Date date,int minute){
|
Calendar c = Calendar.getInstance();
|
c.setTime(date);
|
c.add(Calendar.MINUTE, minute);
|
return c.getTime();
|
}
|
|
}
|