java日期工具类,包含季度,月份等操作
public class DateUtils {
/**
* 得到某年某周的第一天
*
* @param year
* @param week
* @return
*/
public static Date
getFirstDayOfWeek(
int year,
int week) {
week = week -
1;
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, Calendar.JANUARY);
calendar.set(Calendar.DATE,
1);
Calendar cal = (Calendar) calendar.clone();
cal.add(Calendar.DATE, week *
7);
return getFirstDayOfWeek(cal.getTime());
}
/**
* 得到某年某周的最后一天
*
* @param year
* @param week
* @return
*/
public static Date
getLastDayOfWeek(
int year,
int week) {
week = week -
1;
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, Calendar.JANUARY);
calendar.set(Calendar.DATE,
1);
Calendar cal = (Calendar) calendar.clone();
cal.add(Calendar.DATE, week *
7);
return getLastDayOfWeek(cal.getTime());
}
/**
* 取得当前日期所在周的第一天
*
* @param date
* @return
*/
public static Date
getFirstDayOfWeek(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.SUNDAY);
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_WEEK,
calendar.getFirstDayOfWeek());
return calendar.getTime();
}
/**
* 取得当前日期所在周的最后一天
*
* @param date
* @return
*/
public static Date
getLastDayOfWeek(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.SUNDAY);
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_WEEK,
calendar.getFirstDayOfWeek() +
6);
return calendar.getTime();
}
/**
* 取得当前日期所在周的前一周最后一天
*
* @param date
* @return
*/
public static Date
getLastDayOfLastWeek(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return getLastDayOfWeek(calendar.get(Calendar.YEAR),
calendar.get(Calendar.WEEK_OF_YEAR) -
1);
}
/**
* 返回指定日期的月的第一天
*
* @param date
* @return
*/
public static Date
getFirstDayOfMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
1);
return calendar.getTime();
}
/**
* 返回指定年月的月的第一天
*
* @param year
* @param month
* @return
*/
public static Date
getFirstDayOfMonth(Integer year, Integer month) {
Calendar calendar = Calendar.getInstance();
if (year ==
null) {
year = calendar.get(Calendar.YEAR);
}
if (month ==
null) {
month = calendar.get(Calendar.MONTH);
}
calendar.set(year, month,
1,
0,
0,
0);
calendar.set(Calendar.MILLISECOND,
0);
return calendar.getTime();
}
/**
* 返回指定日期的月的最后一天
*
* @param date
* @return
*/
public static Date
getLastDayOfMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
1);
calendar.roll(Calendar.DATE, -
1);
return calendar.getTime();
}
/**
* 返回指定年月的月的最后一天
*
* @param year
* @param month
* @return
*/
public static Date
getLastDayOfMonth(Integer year, Integer month) {
Calendar calendar = Calendar.getInstance();
if (year ==
null) {
year = calendar.get(Calendar.YEAR);
}
if (month ==
null) {
month = calendar.get(Calendar.MONTH);
}
calendar.set(year, month,
1,
0,
0,
0);
calendar.set(Calendar.MILLISECOND,
0);
calendar.roll(Calendar.DATE, -
1);
return calendar.getTime();
}
/**
* 返回指定日期的上个月的最后一天
*
* @param date
* @return
*/
public static Date
getLastDayOfLastMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH) -
1,
1);
calendar.roll(Calendar.DATE, -
1);
return calendar.getTime();
}
/**
* 返回指定日期的季的第一天
*
* @param date
* @return
*/
public static Date
getFirstDayOfQuarter(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return getFirstDayOfQuarter(calendar.get(Calendar.YEAR),
getQuarterOfYear(date));
}
/**
* 返回指定年季的季的第一天
*
* @param year
* @param quarter
* @return
*/
public static Date
getFirstDayOfQuarter(Integer year, Integer quarter) {
Calendar calendar = Calendar.getInstance();
Integer month =
new Integer(
0);
if (quarter ==
1) {
month =
1 -
1;
}
else if (quarter ==
2) {
month =
4 -
1;
}
else if (quarter ==
3) {
month =
7 -
1;
}
else if (quarter ==
4) {
month =
10 -
1;
}
else {
month = calendar.get(Calendar.MONTH);
}
return getFirstDayOfMonth(year, month);
}
/**
* 返回指定日期的季的最后一天
*
* @param date
* @return
*/
public static Date
getLastDayOfQuarter(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return getLastDayOfQuarter(calendar.get(Calendar.YEAR),
getQuarterOfYear(date));
}
/**
* 返回指定年季的季的最后一天
*
* @param year
* @param quarter
* @return
*/
public static Date
getLastDayOfQuarter(Integer year, Integer quarter) {
Calendar calendar = Calendar.getInstance();
Integer month =
new Integer(
0);
if (quarter ==
1) {
month =
3 -
1;
}
else if (quarter ==
2) {
month =
6 -
1;
}
else if (quarter ==
3) {
month =
9 -
1;
}
else if (quarter ==
4) {
month =
12 -
1;
}
else {
month = calendar.get(Calendar.MONTH);
}
return getLastDayOfMonth(year, month);
}
/**
* 返回指定日期的上一季的最后一天
*
* @param date
* @return
*/
public static Date
getLastDayOfLastQuarter(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return getLastDayOfLastQuarter(calendar.get(Calendar.YEAR),
getQuarterOfYear(date));
}
/**
* 返回指定年季的上一季的最后一天
*
* @param year
* @param quarter
* @return
*/
public static Date
getLastDayOfLastQuarter(Integer year, Integer quarter) {
Calendar calendar = Calendar.getInstance();
Integer month =
new Integer(
0);
if (quarter ==
1) {
month =
12 -
1;
}
else if (quarter ==
2) {
month =
3 -
1;
}
else if (quarter ==
3) {
month =
6 -
1;
}
else if (quarter ==
4) {
month =
9 -
1;
}
else {
month = calendar.get(Calendar.MONTH);
}
return getLastDayOfMonth(year, month);
}
/**
* 返回指定日期的季度
*
* @param date
* @return
*/
public static int getQuarterOfYear(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.MONTH) /
3 +
1;
}
/**
* @param year 年份
* @param month 月份
* @param weekOfMonth 这个月的第几周
* @param dayOfWeek 星期几
* @return
*/
public static Date
weekdatetodata(
int year,
int month,
int weekOfMonth,
int dayOfWeek) {
Calendar c = Calendar.getInstance();
c.set(year, month -
1,
1);
int i_week_day = c.get(Calendar.DAY_OF_WEEK);
int sumDay =
0;
if (i_week_day ==
1) {
sumDay = (weekOfMonth -
1) *
7 + dayOfWeek +
1;
}
else {
sumDay =
7 - i_week_day +
1 + (weekOfMonth -
1) *
7 + dayOfWeek +
1;
}
c.set(Calendar.DATE, sumDay);
return c.getTime();
}
/**
* 获取某年某月某周的开始时间
*
* @param year
* @param month
* @param weekOfMonth
* @param dayOfWeek
* @return
*/
public static Date
getWeekFirstDate(
int year,
int month,
int weekOfMonth,
int dayOfWeek) {
return weekdatetodata(year, month, weekOfMonth,
1);
}
/**
* 获取某年某月某周的结束时间
* @param year
* @param month
* @param weekOfMonth
* @param dayOfWeek
* @return
*/
public static Date
getWeekLastDate(
int year,
int month,
int weekOfMonth,
int dayOfWeek) {
return weekdatetodata(year, month, weekOfMonth,
7);
}
/**
* 当前时间的上一个季度的结束日期
*
* @return
*/
public static Date
getLastDayOfTheSeason(){
Date startQuarterDate = DateUtils.getLastDayOfLastQuarter(
new Date());
return startQuarterDate;
}
/**
* 当前时间减去四个季度的时间
*
* @return
*/
public static Date
getMinusFourQuarters(){
Date quarterDate = getLastDayOfTheSeason();
return new DateTime(quarterDate).minusMonths(
12).plusDays(
1).toDate();
}
/**
* 获取年份从日期
* @param date
* @return
*/
public static String
getYearFormDate(Date date){
SimpleDateFormat simpleDateFormat =
new SimpleDateFormat(
"yyyy");
return simpleDateFormat.format(date);
}
}