package com.wonder.util;
import com.wonder.entity.MonthInfos;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class DateUtils {
public static List<MonthInfos> getMonths(String startTime, String endTime) throws Exception {
List<MonthInfos> list = new ArrayList<MonthInfos>();
Date d1 = new SimpleDateFormat("yyyy-MM").parse(startTime);//定义起始日期
Date d2 = new SimpleDateFormat("yyyy-MM").parse(endTime);//定义结束日期
Calendar dd = Calendar.getInstance();//定义日期实例
dd.setTime(d1);//设置日期起始时间
//如果为当前月份,直接写入
if(!dd.getTime().before(d2)){
MonthInfos infos=new MonthInfos();
infos.setStartTime(startTime);
infos.setEndTime(endTime);
SimpleDateFormat month = new SimpleDateFormat("yyyy-MM");
infos.setMonth(month.format(dd.getTime()));
list.add(infos);
}
while (dd.getTime().before(d2)) {//判断是否到结束日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
String str = sdf.format(dd.getTime());
MonthInfos infos=new MonthInfos();
infos.setMonth(str);
//获取年和月份
int year=dd.get(Calendar.YEAR);
int month=dd.get(Calendar.MONTH) + 1;
String firtDate=getFirstDayOfMonth(year, month);
String lastDate=getLastDayOfMonth(year, month);
infos.setStartTime(firtDate);
infos.setEndTime(lastDate);
list.add(infos);
dd.add(Calendar.MONTH, 1);//进行当前日期月份加1
//如果为最后一个月,写入信息
if(!dd.getTime().before(d2)){
year=dd.get(Calendar.YEAR);
month=dd.get(Calendar.MONTH) + 1;
firtDate=getFirstDayOfMonth(year, month);
MonthInfos info=new MonthInfos();
info.setStartTime(firtDate);
info.setEndTime(endTime);
info.setMonth(sdf.format(dd.getTime()));
list.add(info);
}
}
if(list.size()>1){
list.get(0).setStartTime(startTime);
}
return list;
}
//获取最后一天
public static String getLastDayOfMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month-1);
cal.set(Calendar.DAY_OF_MONTH,cal.getActualMaximum(Calendar.DATE));
return new SimpleDateFormat( "yyyy-MM-dd ").format(cal.getTime());
}
//获取第一天
public static String getFirstDayOfMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month-1);
cal.set(Calendar.DAY_OF_MONTH,cal.getMinimum(Calendar.DATE));
return new SimpleDateFormat( "yyyy-MM-dd ").format(cal.getTime());
}
}
package com.wonder.entity;
public class MonthInfos {
private String startTime;
private String endTime;
private String month;
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public String getMonth() {
return month;
}
public void setMonth(String month) {
this.month = month;
}
}