DateUtil日期转换工具类
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
public class DateUtil {
/**
* 将日期格式化为字符串
*
* @param date
* @param pattern "yyyy/MM/dd HH:mm:ss"
* @return String
*/
public static String formatDateToStr(Date date, String pattern) {
if (date == null || StringUtils.isEmpty(pattern)) {
return "";
}
DateFormat df = new SimpleDateFormat(pattern);
String dateStr = df.format(date);
return dateStr;
}
/**
* 将字符串转换为日期
*
* @param str
* @param pattern "yyyy/MM/dd HH:mm:ss"
* @return Date
* @throws ParseException
*/
public static Date formatStrToDate(String str, String pattern) throws ParseException {
DateFormat df = new SimpleDateFormat(pattern);
return df.parse(str);
}
/**
* 获取指定年的的第一天 00:00:00
* @return
*/
public static Date getStartDayOfYear(Date date){
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.setTime(date);
calendar.set(calendar.get(Calendar.YEAR),0,1);
calendar.set(Calendar.HOUR,0);//时
calendar.set(Calendar.MINUTE,0);//分
calendar.set(Calendar.SECOND,0);//秒
return calendar.getTime();
}
/**
* 获取指定年的的最后一天 23:59:59
* @param date
* @return Date
*/
public static Date getLastDayOfYear(Date date) {
final Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
final int last = calendar.getActualMaximum(Calendar.DAY_OF_YEAR);
calendar.set(Calendar.DAY_OF_YEAR, last);
calendar.set(Calendar.HOUR,23);//时
calendar.set(Calendar.MINUTE,59);//分
calendar.set(Calendar.SECOND,59);//秒
return calendar.getTime();
}
/**
* 获取指定月的第一天 00:00:00
* @return
*/
public static Date getStartDayOfMonth(Date date){
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.setTime(date);
calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),1);
calendar.set(Calendar.HOUR,0);//时
calendar.set(Calendar.MINUTE,0);//分
calendar.set(Calendar.SECOND,0);//秒
return calendar.getTime();
}
/**
* 获取指定月的最后一天 23:59:59
* @param date
* @return
*/
public static Date getLastDayOfMonth(Date date) {
final Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
final int last = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.set(Calendar.DAY_OF_MONTH, last);
calendar.set(Calendar.HOUR,23);//时
calendar.set(Calendar.MINUTE,59);//分
calendar.set(Calendar.SECOND,59);//秒
return calendar.getTime();
}
/**
* 获取指定周的第一天 00:00:00
* @return
*/
public static Date getStartDayOfWeek(Date date){
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.setTime(date);
calendar.setFirstDayOfWeek(Calendar.MONDAY); //以周一为首日
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
calendar.set(Calendar.HOUR,0);//时
calendar.set(Calendar.MINUTE,0);//分
calendar.set(Calendar.SECOND,0);//秒
return calendar.getTime();
}
/**
* 获取指定周的最后一天 23:59:59
* @param date
* @return
*/
public static Date getLastDayOfWeek(Date date) {
final Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.setFirstDayOfWeek(Calendar.MONDAY); //以周一为首日
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
calendar.set(Calendar.HOUR,23);//时
calendar.set(Calendar.MINUTE,59);//分
calendar.set(Calendar.SECOND,59);//秒
return calendar.getTime();
}
/**
* 获取指定周的第一天 00:00:00
* 如果:-1 0 0 0即 入参时间-1天的00:00:00
* @return
*/
public static Date getStartDayOfNUmber(Date date,int day, int hour, int min, int second){
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.setTime(date);
calendar.add(Calendar.DATE,day);
calendar.set(Calendar.HOUR,hour);//时
calendar.set(Calendar.MINUTE,min);//分
calendar.set(Calendar.SECOND,second);//秒
return calendar.getTime();
}
/**
* 取得季度第一天
*
* @param date
* @return
*/
public static Date getFirstDateOfSeason(Date date) {
return getStartDayOfMonth(getSeasonDate(date)[0]);
}
/**
* 取得季度最后一天
*
* @param date
* @return
*/
public static Date getLastDateOfSeason(Date date) {
return getLastDayOfMonth(getSeasonDate(date)[2]);
}
/**
* 取得季度月
*
* @param date
* @return
*/
public static Date[] getSeasonDate(Date date) {
Date[] season = new Date[3];
Calendar c = Calendar.getInstance();
c.setTime(date);
int nSeason = getSeason(date);
if (nSeason == 1) {// 第一季度
c.set(Calendar.MONTH, Calendar.JANUARY);
season[0] = c.getTime();
c.set(Calendar.MONTH, Calendar.FEBRUARY);
season[1] = c.getTime();
c.set(Calendar.MONTH, Calendar.MARCH);
season[2] = c.getTime();
} else if (nSeason == 2) {// 第二季度
c.set(Calendar.MONTH, Calendar.APRIL);
season[0] = c.getTime();
c.set(Calendar.MONTH, Calendar.MAY);
season[1] = c.getTime();
c.set(Calendar.MONTH, Calendar.JUNE);
season[2] = c.getTime();
} else if (nSeason == 3) {// 第三季度
c.set(Calendar.MONTH, Calendar.JULY);
season[0] = c.getTime();
c.set(Calendar.MONTH, Calendar.AUGUST);
season[1] = c.getTime();
c.set(Calendar.MONTH, Calendar.SEPTEMBER);
season[2] = c.getTime();
} else if (nSeason == 4) {// 第四季度
c.set(Calendar.MONTH, Calendar.OCTOBER);
season[0] = c.getTime();
c.set(Calendar.MONTH, Calendar.NOVEMBER);
season[1] = c.getTime();
c.set(Calendar.MONTH, Calendar.DECEMBER);
season[2] = c.getTime();
}
return season;
}
/**
*
* 1 第一季度 2 第二季度 3 第三季度 4 第四季度
*
* @param date
* @return
*/
public static int getSeason(Date date) {
int season = 0;
Calendar c = Calendar.getInstance();
c.setTime(date);
int month = c.get(Calendar.MONTH);
switch (month) {
case Calendar.JANUARY:
case Calendar.FEBRUARY:
case Calendar.MARCH:
season = 1;
break;
case Calendar.APRIL:
case Calendar.MAY:
case Calendar.JUNE:
season = 2;
break;
case Calendar.JULY:
case Calendar.AUGUST:
case Calendar.SEPTEMBER:
season = 3;
break;
case Calendar.OCTOBER:
case Calendar.NOVEMBER:
case Calendar.DECEMBER:
season = 4;
break;
default:
break;
}
return season;
}
}