1、简单日期转换工具(线程安全)
/**
* yyyy-MM-dd HH:mm:ss
*/
public static final ThreadLocal<SimpleDateFormat> threadLocal = new ThreadLocal<SimpleDateFormat>() {
protected synchronized SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
};
/**
* 时间转换为yyyy-MM-dd HH:mm:ss格式
*/
public static String date2String(Date date) {
if(date == null){
return null;
}
SimpleDateFormat sdf = threadLocal.get();
return sdf.format(date);
}
/**
* 时间转换为yyyy-MM-dd HH:mm:ss格式
*/
public static Date string2Date(String date) {
if(date==null || date.length()==0){
return null;
}
try{
SimpleDateFormat sdf = threadLocal.get();
return sdf.parse(date);
}catch(Exception e){
return new Date();
}
}
2、简单日期处理工具
/**
* 获取指定日期的当天凌晨时间
*/
public static Date getTodayBeginDate(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
return calendar.getTime();
}
/**
* 获取指定日期的当月起始天凌晨时间
*/
public static Date getMonthBeginDate(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
return calendar.getTime();
}
/**
* 获取指定日期一年后当天日期凌晨前一秒
*/
public static Date getNextYearDate(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.YEAR, 1);
calendar.add(Calendar.SECOND, -1);//减少一秒
return calendar.getTime();
}
/**
* 获取指定日期second秒后的时间
*/
public static Date getAfterSecondDate(Date date , int second) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.SECOND, second);
return calendar.getTime();
}
/**
* 简单校验日期格式:yyyy-MM
*/
public static boolean checkDateFormat(String dateStr) {
if(StringUtil.isBlank(dateStr)) {
return false;
}
return dateStr.matches("^\\d{4}-([0]\\d{1}|[1][0-2])$");
}