String ii;//2002-12-31的前一天
    int ss;//星期几(从星期天算起)
    GregorianCalendar date=new GregorianCalendar(2003,0,1);
    date.add(GregorianCalendar.DATE,-1);
    Date d=date.getTime();
    DateFormat fdate=DateFormat.getDateInstance();
    ii=fdate.format(d);
    ss=date.get(Calendar.DAY_OF_WEEK);
Calendar可以解决这个问题,要注意的是,Calendar中的月份是从0开始计算的,0代表一月,依次类推

解决方案 »

  1.   

    可以参考这个实现办法完成日期的加减
    /**
     * 此处插入方法说明。 创建日期:(2001-10-19 16:50:17)
     * @return long
     * @param startdate java.lang.String  2001-10-19
     * @param enddate java.lang.String 2001-10-19
     */
    public long 两天之间天数(String startdate, String enddate) throws java.lang.Exception {
    int[] start = new int[3];
    java.util.StringTokenizer start1 = new java.util.StringTokenizer(startdate, "-");
    int i = 0;
    while (start1.hasMoreTokens()) {
    start[i++] = Integer.parseInt(start1.nextToken());
    System.out.println(start[i - 1]);
    }
    int[] end = new int[3];
    java.util.StringTokenizer end1 = new java.util.StringTokenizer(enddate, "-");
    i = 0;
    while (end1.hasMoreTokens()) {
    end[i++] = Integer.parseInt(end1.nextToken());
    System.out.println(end[i - 1]);
    }
    System.out.println(end[2]);
    Calendar c1 = Calendar.getInstance();
    c1.set(start[0], start[1] - 1, start[2]);
    long m1 = c1.getTime().getTime();
    Calendar c2 = Calendar.getInstance();
    c2.set(end[0], end[1] - 1, end[2]);
    long m2 = c2.getTime().getTime();
    System.out.println("m1=" + m1);
    System.out.println("m2=" + m2);
    long d = m2 - m1;
    if (m1 > m2) {
    // -------------------------------------------------------------------
    cat.info("数据库时间设置有错误!");
    // -------------------------------------------------------------------
    throw(new Exception("数据库时间设置有错误!请重新设置数据库时间!!"));
    }
    return (d / (3600 * 24 * 1000));
    }
      

  2.   

    这个问题只要用  java.util.Calendar完全可以的.我给你一个例子是我自己写的,用来根据当天来计算这一天所在的一周时间,我现在已经在用了应该对你有所邦助,main里面是可以用来调试的,你可以编译一下试试看我想应该解决你的问题。祝你好运!
    /*
    writer:freebird
    time:021015
    */
    package bean;
    import java.util.*;
    import java.lang.*;public class getDates {  public getDates() {  }  public  Vector vec=new Vector();
      public  Vector  get_Date(int l_year,int l_month,int l_date){
        Vector vec1 = new Vector();
        Calendar cal = Calendar.getInstance();
        Calendar cal2 = Calendar.getInstance();
        cal.set(l_year,l_month-1,l_date);
        cal2.set(l_year,l_month-1,l_date);     int  l_y2  = cal2.get(Calendar.YEAR);
        int  l_m2  = cal2.get(Calendar.MONTH)+1;
        int  l_d2  = cal2.get(Calendar.DAY_OF_MONTH);
        int  l_w2  = cal2.get(Calendar.DAY_OF_WEEK);
        int  l_maxday2 = cal2.getActualMaximum(Calendar.DAY_OF_MONTH);
        String l_strdate = String.valueOf(l_y2)+"-"+String.valueOf(l_m2)+"-"+String.valueOf(l_d2);
        vec1.addElement(l_strdate);
        while(l_w2<7){
          if(l_d2==l_maxday2){
            if(l_m2==12){
              cal2.set(l_y2+1,0,1);
            }
            else{
              cal2.roll(Calendar.MONTH,true);
              cal2.set(Calendar.DAY_OF_MONTH,1);
            }
          }
          else{
            cal2.roll(Calendar.DAY_OF_MONTH,true);
          }
          l_y2 = cal2.get(Calendar.YEAR);
          l_m2 = cal2.get(Calendar.MONDAY)+1;
          l_d2 = cal2.get(Calendar.DAY_OF_MONTH);
          l_w2 = cal2.get(Calendar.DAY_OF_WEEK);
          l_maxday2 = cal2.getActualMaximum(Calendar.DAY_OF_MONTH);
          l_strdate = String.valueOf(l_y2)+"-"+String.valueOf(l_m2)+"-"+String.valueOf(l_d2);
          vec1.addElement(l_strdate);    }
        int  l_y  = cal.get(Calendar.YEAR);
        int  l_m  = cal.get(Calendar.MONTH)+1;
        int  l_d  =cal.get(Calendar.DAY_OF_MONTH);
        int  l_w  =cal.get(Calendar.DAY_OF_WEEK);
        int l_maxday = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        l_strdate = String.valueOf(l_y)+"-"+String.valueOf(l_m)+"-"+String.valueOf(l_d);    while(l_w>1){
          if (l_d==1){
            if(l_m==1)
              cal.set(l_y-1,11,31);
            else {
              cal.roll(Calendar.MONTH,false);
              int  l_y3=cal.get(Calendar.YEAR);
              int l_m3 =cal.get(Calendar.MONTH)+1;
              int l_d3 =cal.get(Calendar.DAY_OF_MONTH);
               l_maxday = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
              System.out.println(l_y3);
              System.out.println(l_m3);
              System.out.println(l_d3);
              cal.set(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),cal.getActualMaximum(Calendar.DAY_OF_MONTH));
            }
          }
          else{
            cal.roll(Calendar.DAY_OF_MONTH,false);
          }
          l_y = cal.get(Calendar.YEAR);
          l_m =cal.get(Calendar.MONDAY)+1;
          l_d =cal.get(Calendar.DAY_OF_MONTH);
          l_w = cal.get(Calendar.DAY_OF_WEEK);
          l_maxday = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
          l_strdate = String.valueOf(l_y)+"-"+String.valueOf(l_m)+"-"+String.valueOf(l_d);
          vec1.insertElementAt(l_strdate,0);
        }
        return  vec1;
      }
      /*
      public static void main(String[] args){
         getDates a= new getDates();
         Vector b=a.get_Date(2002,1,1);
         System.out.println(b);  }
      */
    }
      

  3.   

    我自己搞定了!强烈要求斑竹给我自己加分!爽!
    主要关键是月份要减1。
    代码如下:
     Calendar cal = Calendar.getInstance();
        //int LFD=FD-10000;
        cal.set(2003,0,31);
        int tWek= cal.get(cal.DAY_OF_WEEK);
        cal.set(2002,0,31);
        cal.add(cal.DATE,1);
        int k = 10001;
        if(cal.get(cal.DAY_OF_WEEK)!=tWek) {cal.add(cal.DATE,1);k++;}
        int LFD=cal.get(cal.YEAR)*10000+cal.get(cal.MONTH)*100+cal.get(cal.DATE)+100;
        //int LLD=LFD+(LD-FD);
    System.out.println(LFD);
      

  4.   

    Calendar可以解决这个问题,要注意的是,Calendar中的月份是从0开始计算的,0代表一月,依次类推注意看我的贴子啊,我早就看出问题所在 了
    呵呵,怎么样,给我点分吧
      

  5.   

    jym212cn(满子) :
    对不起!我没有把所有方法列处理!其实搞之前还要加个一的!然后在减一!
    跟“0代表一月”关系不是决定性的!哈哈!
    哈哈!只不过很感谢你!俺不赖皮!
    分分!我也想要怎么办?
      

  6.   

    不是说!自己解决可以让斑竹给自己分的!
    我只要1分还不行吗?别的都给你们!
    哈哈!
    帮助UP!
    THANKS!
      

  7.   

    计算某年某月某日是星期几,利用Date类就可以完全解决。