需求是: 每一年分4个季度进行统计,即如2008-01-01 到 2008-03-31 为第一季度,2008-04-01 到2008-06-30 为第二季度。现在要按每个季度进行周个数统计和每周的日期范围统计,每个季度的第一周的第一个星期日为第一周的结束。
即如2008-01-01(星期2) 到 2008-01-06(星期日) 为第一周,第二周则从2008-01-07(星期1)到2008-01-06(星期天)为第二周。注意每个季度的最后一周的日期不能大于该季度的最后一天,即第一季度的最后一周应该是只有2008-03-31 这一天。
请问如何提供一个年份和季度,计算出该季度的周的个数,以及每周的时间范围,即给出2008年,第一季度,算出有14周,第一周是2008-01-01 到 2008-01-06。

解决方案 »

  1.   

    你应该先找个万年历(java的)
      

  2.   

    java.util.Calendar 里面有你需要的所有东西!
      

  3.   

    最近刚用过java.util.Calendar 
    up下
      

  4.   

    是的,JAVA里有你要的东西,比如1月1日,4月1日,7月1日以及10月1日是星期几,然后不就能判断了吗?
      

  5.   

    java.util.Calendar 肯定是要用到的...
      

  6.   

    只能给你一个思路,代码还需要你自己写,
    主要是利用java.util.Calendar类,按季度划分,一般是知道一个季度的最后一个天,
    如:3-31为第一季度最后一天,先构建这个时间的Calendar对象,使用此对象的.get(WEEK_OF_YEAR)方法就可以得到第一季度有几周了,2,3,4季度可以在此基础上减去上一季度的周数就是本季度的了对于取周的第1和7天使用c.set(Calendar.WEEK_OF_YEAR,上季度总周数+季度周数)
    如:2季度第3周,即可使用c.set(Calendar.WEEK_OF_YEAR,14+3),就是将你的日期设置为你那一周的星期一了,星期天就用add方法,但是值得注意的是,这样设置的日期,是按周来算的,每次都会设置为本周的星期一(和设置有关系),如:2008的第一周,日期为2007-12-31,这个你要注意处理好.我说的希望对你有用!~如果认为还行,请为我加点分!
      

  7.   

    java.util.Calendar 吧,这里面好像有你需要的东东!
      

  8.   

    你可以去研究一下Data.下的一些方法比如Data.addDate他可以控制你想要锁定的月份以及天数String time1="2008-05";
    String date1=time1+"-1";
    System.out.println(date1);  //结果就是2008-05-1
    String date2=Data.dateadd("M",date1,1); //意思是指在2008-05-1的月份基础上+1个月
    System.out.println(date2);  //结果就是2008-06-1
    String date2=Data.dateadd("D",date2,-1); //意思是直在2008-06-1的基础之上-1天
    System.out.println(date2); //结果是2008-5-31你可以根据我的提示对自己想做的季度进行划分,这个应该属于一个区间性日期查询
    给定季度查询应该是   第一季度从  XX年1月1日- 到 XX年 3月31日  第一季度的一周 到 XX周!
                         第二季度。。
                         
    按照我给的例子你自己做一个试验我想结果不会太难吧
      

  9.   

    写过一个得到一个月当中的星期,不过自己觉得有点麻烦
    代码给你看看 参考一下吧public static List<String> getAllWeekOfMonth(String year,String month){
    SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
    String last=Common.getLastDayOfMonth(Integer.parseInt(year), Integer.parseInt(month));
    List<String> timeList=new ArrayList<String>();
    //一个星期的毫秒数
    long time=7*3600*24*1000;
       try {
       //一个月开始
    Date firstDay=format.parse(year+"-"+month+"-01");
    //月的最后一天
    Date lastDay=format.parse(last);
    //最后一天的毫秒
    long endmonth=lastDay.getTime();
    Calendar calendar=Calendar.getInstance();
    //得到月开始的那天所在周的周一日期
    calendar.setTime(firstDay);
    calendar.set(Calendar.DAY_OF_WEEK,2);
    Date monday=calendar.getTime();
    String mon=format.format(monday);
                  // 得到月开始的那天所在周的周日日期
    calendar.set(Calendar.DAY_OF_WEEK,1);
    Date sunday=calendar.getTime();
    //由于系统要求一周是从周一开始周日结束 所以得到下周的周日
    calendar.setTimeInMillis(sunday.getTime()+time);
    sunday=calendar.getTime();
    String sun=format.format(calendar.getTime());
    timeList.add(mon+","+sun);
    //循环得到本月的周
    for (int i =0; i < 6; i++) {
    calendar.setTimeInMillis(monday.getTime()+time);
    monday=calendar.getTime();
    mon=format.format(monday);
    calendar.setTimeInMillis(sunday.getTime()+time);
    sunday=calendar.getTime();
    sun=format.format(sunday);
    if(monday.getTime()<=endmonth){
       timeList.add(mon+","+sun);
    }else{
    break;
    }
    }


    } catch (ParseException e) {
    e.printStackTrace();
    }
    return timeList;
    }