import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang.StringUtils;public classDateUtilEx {public final static String yyyy = "yyyy";public final static String yyMMdd = "yyMMdd";public final static String yyyyMM = "yyyyMM";public final static String yyyyMMdd = "yyyyMMdd";public final static String yyyyMMddHHmmss = "yyyyMMddHHmmss";public final static String yyyy_MM_dd = "yyyy-MM-dd";public final static String yyyy_MM_dd_HH_mm_ss = "yyyy-MM-dd HH:mm:ss";
public staticYearMonthDto getLastYearAndMonth() {
YearMonthDto dto= newYearMonthDto();
Calendar cal=Calendar.getInstance();
cal.setTime(newDate());
cal.add(Calendar.MONTH,-1);int year = cal.get(Calendar.YEAR);int lastMonth = cal.get(Calendar.MONTH) + 1;
dto.setYear(year);
dto.setMonth(lastMonth);returndto;
}
public staticYearMonthDto getLastYearAndMonth(Date date) {
YearMonthDto dto= newYearMonthDto();
Calendar cal=Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH,-1);int year = cal.get(Calendar.YEAR);int lastMonth = cal.get(Calendar.MONTH) + 1;
dto.setYear(year);
dto.setMonth(lastMonth);returndto;
}
public staticYearMonthDto getNextYearAndMonth(Date nowDate) {
YearMonthDto dto= newYearMonthDto();
Calendar cal=Calendar.getInstance();
cal.setTime(nowDate);
cal.add(Calendar.MONTH,1);int year = cal.get(Calendar.YEAR);int lastMonth = cal.get(Calendar.MONTH) + 1;
dto.setYear(year);
dto.setMonth(lastMonth);returndto;
}
public staticYearMonthDayDto getYearMonthDay(Date date) {
YearMonthDayDto dto= newYearMonthDayDto();
Calendar cal=Calendar.getInstance();
cal.setTime(date);int year = cal.get(Calendar.YEAR);int month = cal.get(Calendar.MONTH) + 1;int day = cal.get(Calendar.DAY_OF_MONTH);
dto.setYear(year);
dto.setMonth(month);
dto.setDay(day);
dto.setDay(day);returndto;
}
public static ListgetYearMonthBetween(Date minDate, Date maxDate) {
List result = new ArrayList();try{
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM");//格式化為年月
String minDateStr =sdf.format(minDate);
String maxDateStr=sdf.format(maxDate);
Calendar min=Calendar.getInstance();
Calendar max=Calendar.getInstance();
min.setTime(sdf.parse(minDateStr));
min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);
max.setTime(sdf.parse(maxDateStr));
max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);
Calendar curr=min;
YearMonthDto dto= null;
YearMonthDayDto yearMonthDay=getYearMonthDay(minDate);int i = 0;while(curr.before(max)) {
dto= newYearMonthDto();
dto.setYear(curr.get(Calendar.YEAR));
dto.setMonth(curr.get(Calendar.MONTH) + 1);if (i == 0) {
dto.setDay(yearMonthDay.getDay());
}else{
dto.setDay(1);
}
result.add(dto);
curr.add(Calendar.MONTH,1);
i++;
}
}catch(Exception e) {
e.printStackTrace();
}returnresult;
}public static voidmain(String args[]) {
System.out.println(parseDate(2016, 1, 1));
}
public static Date getMonthEndDate(int year, intmonth) {
Calendar cal=Calendar.getInstance();//設定年份
cal.set(Calendar.YEAR, year);//設定月份
cal.set(Calendar.MONTH, month);//設定 後一個月的 第一天
cal.set(Calendar.DAY_OF_MONTH, 1);//後一個月的第一天 減一天 就為上一個月的最後一天
cal.add(Calendar.DAY_OF_MONTH, -1);
Date lastDate=cal.getTime();//格式化日期
returnlastDate;
}
public static Date getFirstDayOfMonth(int year,intmonth){
Calendar cal=Calendar.getInstance();//設定年份
cal.set(Calendar.YEAR,year);//設定月份
cal.set(Calendar.MONTH, month-1);//擷取某月最小天數
int firstDay =cal.getActualMinimum(Calendar.DAY_OF_MONTH);//設定月曆中月份的最小天數
cal.set(Calendar.DAY_OF_MONTH, firstDay);
Date firstDayOfMonth=cal.getTime();returnfirstDayOfMonth;
}
public staticboolean checkIsEndDate(Date date) {
Calendar cal=Calendar.getInstance();
cal.setTime(date);if (cal.get(Calendar.DATE) ==cal.getActualMaximum(Calendar.DAY_OF_MONTH)) {return true;
}else{return false;
}
}
public staticString formatDate(Date date, String pattern) {if (date == null) {return "";
}
SimpleDateFormat sdf= newSimpleDateFormat(pattern);returnsdf.format(date);
}
public staticDate parseDate(String date, String pattern) {if(StringUtils.isEmpty(date)) {return null;
}
SimpleDateFormat sdf= newSimpleDateFormat(pattern);try{returnsdf.parse(date);
}catch(ParseException e) {//TODO Auto-generated catch block
e.printStackTrace();
}return null;
}
public static Date parseDate(int year, intmonth) {return DateUtilEx.parseDate(year + "-" + StringUtils.leftPad(month + "", 2, "0") + "-01",
DateUtilEx.yyyy_MM_dd);
}
public static Date parseDate(int year, int month, intday) {returnDateUtilEx.parseDate(
year+ "-" + StringUtils.leftPad(month + "", 2, "0") + "-" + StringUtils.leftPad(day + "", 2, "0"),
DateUtilEx.yyyy_MM_dd);
}
public static String format(int year, int month, intday, String spaceMark) {return year + spaceMark + StringUtils.leftPad(month + "", 2, "0") +spaceMark+ StringUtils.leftPad(day + "", 2, "0");
}
public static Date long2Date(longtime) {
Calendar c=Calendar.getInstance();
c.setTimeInMillis(time);returnc.getTime();
}
public staticDate getMinMonthDate(Date date) {
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));returncalendar.getTime();
}
public staticDate getMaxMonthDate(Date date) {
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));returncalendar.getTime();
}
}