根据所选的year 和 month 获得所有的周开始与结束

  public static List<String> getYearMonthWeekly(String yearStr,String monthStr){   
    	SimpleDateFormat sdfm=new SimpleDateFormat("yyyy-MM");
    	SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    	List<String> array = new ArrayList<String>();
    	String dateStr = yearStr+"-"+monthStr+"-1";
    	Calendar cd=Calendar.getInstance();
    	try {
    	//设置日期
    	cd.setTime(sdfm.parse(dateStr));
    	cd.setFirstDayOfWeek(Calendar.MONDAY);
    	int month=cd.get(Calendar.MONTH);
    	List<String[]> list=new ArrayList<String[]>();
    	//如果本月第一天不为星期一,表示是上月最后一周延续,所以先计算
    	if((cd.get(Calendar.DAY_OF_WEEK)-1)!=1){
    	String[] str=new String[2];
    	//获取当前星期几
    	int weekDay=0;
    	weekDay=cd.get(Calendar.DAY_OF_WEEK)-1;
    	//如果为0表示星期天,设置为7
    	if(weekDay==0){
    	weekDay=7;
    	}
    	//减去当前星期几-1,获得本周一是多少号
    	cd.add(Calendar.DATE,-(weekDay-1));
    	str[0]=sdf.format(cd.getTime());
    	//本周一加6,获得本周日是多少号
    	cd.add(Calendar.DATE,6);
    	str[1]=sdf.format(cd.getTime());
    	list.add(str);
    	//本周日加一,设置为下周开始时间
    	cd.add(Calendar.DATE, 1);
    	cd.setTime(cd.getTime());
    	}
    	for(int i=0;i<10;i++){
    	String[] str=new String[2];
    	//获取当前星期几
    	int weekDay=0;
    	weekDay=cd.get(Calendar.DAY_OF_WEEK)-1;
    	//如果为0表示星期天,设置为7
    	if(weekDay==0){
    	weekDay=7;
    	}
    	//减去当前星期几-1,获得本周一是多少号
    	cd.add(Calendar.DATE,-(weekDay-1));
    	if(month!=cd.get(Calendar.MONTH)){
    	break;
    	}
    	str[0]=sdf.format(cd.getTime());
    	//本周一加6,获得本周日是多少号
    	cd.add(Calendar.DATE,6);
    	str[1]=sdf.format(cd.getTime());
    	list.add(str);
    	//本周日加一,设置为下周开始时间
    	cd.add(Calendar.DATE, 1);
    	cd.setTime(cd.getTime());
    	}
    	for(int i=0;i<list.size();i++){
//    	System.out.println(list.get(i)[0]+"--------------"+list.get(i)[1]);
    	array.add(list.get(i)[0]+"~"+list.get(i)[1]);
    
    	}
    	} catch (ParseException e) {
    	e.printStackTrace();
    	} 
    	return array;
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值