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);
}
}