根据月份,计算当月周数(非自然周)

最近做项目,用户要求 周定义:上周周三开始,至本周周二作为一周。

下面是我写的类:

/**
* 根据月份,查找月份对应的的周
* 每周周二的日期记录到list
* @param datetime
* @return
* @author Juannyoh
* @date 2014-7-17下午03:48:17
*/
public List<HashMap<String,Object>> getWeek2Bymonth(String datetime){


List<HashMap<String,Object>> weeklist=new ArrayList<HashMap<String,Object>>();
List<HashMap<String,Object>> week2list=new ArrayList<HashMap<String,Object>>();
Calendar calendar = Calendar.getInstance();
Date nowdate = calendar.getTime();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String tomonth=df.format(nowdate).substring(0, 7);//获得当前月份
if(datetime.equals("")||datetime==null||datetime.equals("null")){
datetime=tomonth;
}

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
Date date1;
int count=1;
try {
date1 = dateFormat.parse(datetime);
calendar.setTime(date1);
int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);//获取一个月内最大的天数
for(int i=1;i<=days;i++){
Date date2 = dateFormat1.parse(datetime + "-" + i);
       calendar.clear();
       calendar.setTime(date2);
       int k = new Integer(calendar.get(Calendar.DAY_OF_WEEK));//获取该天是星期几
       HashMap<String,Object> map=new HashMap<String,Object>();
if(k==3){
Date times=new SimpleDateFormat("yyyy-MM-dd").parse(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-"+ calendar.get(Calendar.DAY_OF_MONTH));
//System.out.println("第"+count+"个星期二是:"+dateFormat1.format(times));
map.put("seardays", dateFormat1.format(times));
weeklist.add(map);
count++;
}
}
//System.out.println(days);
HashMap<String,Object> map=weeklist.get(0);
String date=map.get("seardays").toString().trim();
Date date2 = dateFormat1.parse(date);
       calendar.clear();
       calendar.setTime(date2);
       calendar.add(Calendar.DATE, -7);
Date times=new SimpleDateFormat("yyyy-MM-dd").parse(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-"+ calendar.get(Calendar.DAY_OF_MONTH));
HashMap<String,Object> maps=new HashMap<String,Object>();
maps.put("seardays", dateFormat1.format(times));
//weeklist.add(maps);
//System.out.println("往前推一个星期是:"+dateFormat1.format(times));


week2list.add(maps);
for(int i=0;i<weeklist.size();i++){
week2list.add(weeklist.get(i));
}

} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return week2list;

}



不知道怎么粘贴代码块儿,搞的每次都是这样显示,不直观。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值