比如2005年,第10周,是 2005-2-1至2005-1-8号,我就是想得到这前后两个数值日期.如何计算!!!!  //获取当前日期是某年第几周期;
  public static int getWeekNo(String weekValues) {
    int weekno = 0;
    GregorianCalendar calendar = (GregorianCalendar) GregorianCalendar.
        getInstance();
    SimpleDateFormat date_form = new SimpleDateFormat("yyyy-MM-dd");
    String s_date = weekValues;    try {
      java.util.Date this_date = date_form.parse(s_date);
      calendar.setTime(this_date);
      weekno = (calendar.get(GregorianCalendar.WEEK_OF_YEAR)); //星期天为1,依次类推,同样可以获得DAY_OF_YEAR,DAY_OF_MONTH 之类,可查看API。    }
    catch (Exception e) {
      e.printStackTrace();
      System.err.println(e.getMessage());
    }
    return weekno;
  }}

解决方案 »

  1.   

    就是GregorianCalendar.WEEK_OF_YEAR 计数出来的星期数啊,比如,2005年第3周,是从哪天开始到哪天结束.
      

  2.   

    int dateOfWeekEnd = (calendar.get(GregorianCalendar.DAY_OF_WEEK) == 7)? (0):(7 - calendar.get(GregorianCalendar.DAY_OF_WEEK));

    calendar.add(GregorianCalendar.DATE, dateOfWeekEnd);
    System.out.println(calendar.getTime().toString());//结束日期

    calendar.add(GregorianCalendar.DATE, -7);
    System.out.println(calendar.getTime().toString());//开始日期抢分,没有经过什么测试,大致上就是这个思路.自己试一下.
      

  3.   

    不好意思, 手忙脚乱,前面的代码都忘贴了.
    SimpleDateFormat date_form = new SimpleDateFormat("yyyy-MM-dd");
    java.util.Date this_date = date_form.parse("2005-08-06");
    //2005-08-06就是你传到getWeekNo(String weekValues)里的参数 weekValues.GregorianCalendar calendar = (GregorianCalendar) GregorianCalendar
    .getInstance();
    calendar.setTime(this_date);
      

  4.   

    package List.test;import java.util.GregorianCalendar;
    import java.util.Date;
    import java.text.*;public class WeekRange {
      public WeekRange() {
      }  public static void main(String[] args) {
        GregorianCalendar gc = new GregorianCalendar();
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        int year = 2005; //年份
        int cycle = 7; //定义的周期长度
        int howmany = 10; //定义有多少个周期
        Date date = new Date();
        date.setYear(2005 - 1900);
        date.setMonth(0);
        date.setDate(1);
        System.out.println(df.format(date));
        gc.setTime(date);
        gc.add(GregorianCalendar.DAY_OF_YEAR, cycle * howmany);
        String end = df.format(gc.getTime());
        gc.add(GregorianCalendar.DAY_OF_YEAR,0-cycle);
        String begin=df.format(gc.getTime());
        System.out.println(year+"第"+howmany+"个"+cycle+"天从"+begin+"开始到"+end+"结束");
      }}
      

  5.   

    如果你得到的是周期的话用 gc.get(GregorianCalendar.DAY_OF_WEEK),来得到你处理
    后的时间是该周期的星期几,那么就可以知道范围了。
      

  6.   

    不是不是啊,我现在已经有了某一天在一年中是属于第几周的数值,我就是想要得到,一年中,该周期数是从哪天开始,到哪天结束,是属于该周的啊----------------------------------------------------------------------------------
    楼主有没有运行试试?//下面这句得到的是那一周的周末的日期, 比如calendar的日期是 2005-08-06 , 
    //calendar.get(GregorianCalendar.DAY_OF_WEEK)的值就是7.注意: 我在我的机器上得出的结果是7
    //, 周六被当成了一周的第七天, 周日被当成第一天. 所以下面的代码结果不正确.
    //dateOfWeekEnd 计算出calendar的日期和周末的差距(天数).int dateOfWeekEnd = (calendar.get(GregorianCalendar.DAY_OF_WEEK) == 7)? (0):(7 - calendar.get(GregorianCalendar.DAY_OF_WEEK));
    //这句的意思是把calendar的日期加上 dateOfWeekEnd ,就是周末的日期
    calendar.add(GregorianCalendar.DATE, dateOfWeekEnd);
    System.out.println(calendar.getTime().toString());//结束日期//这句的意思自己想想.
    calendar.add(GregorianCalendar.DATE, -7);
    System.out.println(calendar.getTime().toString());//开始日期思路就像上面一样.如果你想不出来, 干脆再开个贴多给点分, 会有更多更全面正确的代码给你.
      

  7.   

    Date d = DateFormat.getDateInstance(DateFormat.MEDIUM).parse("2005-07-20");
    int w = d.getDay();
    Date start = new Date(d.getYear(), d.getMonth(), d.getDate() - w);
    Date end = new Date(d.getYear(), d.getMonth(), d.getDate() + 6 - w);
    System.out.println(start);
    System.out.println(end);
      

  8.   

    你的意思好像是给定一个年份和第几周,求出这一周的起始和结束
    下面这个函数getstartend能完全满足你的要求
    import java.util.Calendar;public class aaa { public static Calendar[] getstartend(int year, int weeknum) {
    /*参数说明
     * int year 年分 例如 2005 
     * int weeknum 第几周 例如33 
     * 返回一个Calendar数组,长度为2
     * 分别是开始日期和结束日期
     */
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, year);
    cal.set(Calendar.WEEK_OF_YEAR, weeknum);
    int nw = cal.get(Calendar.DAY_OF_WEEK);
    Calendar start = (Calendar) cal.clone();
    Calendar end = (Calendar) cal.clone();
    start.add(Calendar.DATE, 1 - nw);
    end.add(Calendar.DATE, 7 - nw);
    Calendar[] darr = { start, end };
    return darr;
    } public static String getFullTimeStr(Calendar d) {
    return d.get(Calendar.YEAR) + "-" + (d.get(Calendar.MONTH) + 1) + "-"
    + d.get(Calendar.DATE);
    } public static void main(String[] args) {
    try {
    Calendar[] darr = getstartend(2005, 33);
    System.out.println(getFullTimeStr(darr[0]) + "\n"
    + getFullTimeStr(darr[1])); } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }