根据时间段,求出时间段范围内的每月最后一周 周二
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;
}
/**
* 根据时间段,求出时间段范围内的每月最后一周 周二
* @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;
}
相关文章推荐
- js根据开始时间和结束时间获取该时间段内的每天、每周一、每月、每年
- js得到连两个时间段之间所有的年-月 获取当前日期 格式化日期 根据指定日期得到该日期该月份的最后一天
- C#根据时间范围获取每年每月每周的分组
- java 获取某时间段内每月/每年的最后一天的集合
- js根据开始时间和结束时间获取该时间段内的每天、每周一、每月、每年
- js根据当前时间获取指定范围内的时间段日期
- 获得时间段之间每月的最后一天
- Salesforce 根据字段排序将空值放到最后
- SQL获取每月最后一天记录
- C#获取指定月指定周的日期范围 根据当前时间获取本月开始日期和结束日期
- 前端 根据某个时间获得它的时间戳,并实现某个时间段内倒现在时间的倒计时功能
- mysql中根据今天,昨天,一周,一月等查询数据
- Java得到的一周的最后一天的一段时间内
- 最后一周psp
- java写的日期工具,根据设置日期获取指定的一周或者一个月的所有日期
- c# 根据当前时间获取,本周,本月,本季度,月初,月末,各个时间段
- SQL时间范围语句(包含日期段和时间段)
- SQL获取每月最后一天记录
- mysql 根据指定日期取 周一至周日 本月第一天 最后一天