您的位置:首页 > 其它

根据时间段,求出时间段范围内的每月最后一周 周二

2014-07-15 15:42 399 查看
最近做系统,用户需求按月统计,但月非自然月,是自定义的:上个月月最后一周周二,到本月最后一周周二算一个月。所以做了一个通用类,根据时间段,采用笨方法~~算出该时间段范围内的每个月最后一周周二具体的日期。

/**

* 根据时间段,求出时间段范围内的每月最后一周 周二

* @param beginmonth

* @param endmonth

* @return

* @throws Exception

* @author Juannyoh

* @date 2014-7-14下午04:41:49

*/

public List<HashMap<String,Object>> getGroupMonth(String beginmonth,String endmonth) throws Exception{

Calendar calendar = Calendar.getInstance();

Date date = calendar.getTime();

DateFormat df = new SimpleDateFormat("yyyyMMdd");

String today=df.format(date);

if((beginmonth==null||beginmonth.equals(""))&&(endmonth==null||endmonth.equals(""))){

beginmonth="20131231";

endmonth=today;

}

else if(beginmonth==null||beginmonth.equals("")){

beginmonth="20131231";

}

else if(endmonth==null||endmonth.equals("")){

endmonth=today;

}

List<HashMap<String,Object>> monthlist=new ArrayList<HashMap<String,Object>>();

int beginyear=Integer.parseInt(beginmonth.substring(0,4));

int beginmon=Integer.parseInt(beginmonth.substring(4,6));

int endyear=Integer.parseInt(endmonth.substring(0,4));

int endmon=Integer.parseInt(endmonth.substring(4,6));

String newdate="";

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM");

DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");

for(int year=beginyear;year<=endyear;year++){

for(int month=1;month<=12;month++){

newdate=year+"-"+month;

Date date1 = dateFormat.parse(newdate);

calendar.setTime(date1);

int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

//System.out.println(date+" 月 days:" + days);

Date date2 = dateFormat1.parse(newdate + "-" + days);

calendar.clear();

calendar.setTime(date2);

int k = new Integer(calendar.get(Calendar.DAY_OF_WEEK));//星期二

if(k>=3){

String newday=days-(k-3)+"";

date2=dateFormat1.parse(newdate + "-" + newday);

calendar.clear();

calendar.setTime(date2);

//System.out.println(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-"+ calendar.get(Calendar.DAY_OF_MONTH));

}

else{

String newday=days-7+(3-k)+"";

date2=dateFormat1.parse(newdate + "-" + newday);

calendar.clear();

calendar.setTime(date2);

//System.out.println(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-"+ calendar.get(Calendar.DAY_OF_MONTH));

}

//只保存需要的月份日期

if(year==beginyear&&year!=endyear){

if(month>=beginmon&&month<=12){

HashMap<String,Object> daymap=new HashMap<String,Object>();

daymap.put("seardays", calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-"+ calendar.get(Calendar.DAY_OF_MONTH));

monthlist.add(daymap);

}

}

else if(year>beginyear&&year<endyear){

HashMap<String,Object> daymap=new HashMap<String,Object>();

daymap.put("seardays", calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-"+ calendar.get(Calendar.DAY_OF_MONTH));

monthlist.add(daymap);

}

else if(year==endyear&&year!=beginyear){

if(month>=1&&month<=endmon){

HashMap<String,Object> daymap=new HashMap<String,Object>();

daymap.put("seardays", calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-"+ calendar.get(Calendar.DAY_OF_MONTH));

monthlist.add(daymap);

}

}

else if(year==beginyear&&year==endyear){

if(month>=beginmon&&month<=endmon){

HashMap<String,Object> daymap=new HashMap<String,Object>();

daymap.put("seardays", calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-"+ calendar.get(Calendar.DAY_OF_MONTH));

monthlist.add(daymap);

}

}

}

}

return monthlist;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: