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;
}/**
* 获取某个日期的年份 月份 日期
*
* @param date
* @return*/
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;
}/**
* 获取两个日期之间的年份月份
*
* @param minDate
* @param maxDate
* @return*/
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));
}/**
* 获取某一个月的月末日期
*
* @param year
* @param month
* @return*/
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;
}
}/**
* 格式化日期
*
* @param date
* @param pattern
* @return*/
public staticString formatDate(Date date, String pattern) {if (date == null) {return "";
}
SimpleDateFormat sdf= newSimpleDateFormat(pattern);returnsdf.format(date);
}/**
* 格式化日期
*
* @param date
* @param pattern
* @return*/
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;
}/**
* 格式化日期
*
* @param year
* @param month
* @return*/
public static Date parseDate(int year, intmonth) {return DateUtilEx.parseDate(year + "-" + StringUtils.leftPad(month + "", 2, "0") + "-01",
DateUtilEx.yyyy_MM_dd);
}/**
* 格式化日期
*
* @param year
* @param month
* @return*/
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);
}/**
* 转换成数据格式
*
* @param year
* @param month
* @param day
* @param spaceMark
* @return*/
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");
}/**
* 长整形转换为日期
*
* @param time
* @return*/
public static Date long2Date(longtime) {
Calendar c=Calendar.getInstance();
c.setTimeInMillis(time);returnc.getTime();
}/**
* 获取月份起始日期
*
* @param date1
* @return*/
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();
}/**
* 获取月份结束日期
*
* @param date
* @return*/
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();
}
}