如題:比如今天是2005/10/31日,我現在想計算出5天後的日期(2005/11/5),java中有沒有現成的API實現這種功能呀,在sqlServer中用日期相加的函數可以實現的

解决方案 »

  1.   

    Calendar d1 = Calendar.getInstance();
            System.out.println(d1.getTime());
            d1.set(Calendar.DAY_OF_MONTH, (d1.get(Calendar.DAY_OF_MONTH))+5);
      

  2.   

    直接 set 不太好
    d1.roll(Calendar.DAY,5);就可以了
    如果是向前调整5天,就是-5
      

  3.   

    直接 set 不太好
    d1.roll(Calendar.DAY,5);就可以了
    如果是向前调整5天,就是-5
    这个根本就不行,编译都通过不了,Calendar.DAY根本就没有这个常量。换成Calendar.DATE也不行。跨年的时候有问题
      

  4.   

    应该是
    add(Calendar.DATE, 5);
      

  5.   

    public static Date dateAdd(Date mydate,String interval,int number)
        {
            Date datReturn=null; 
            int intInterval=GregorianCalendar.DAY_OF_YEAR;
            if (interval.equals("Y"))
                intInterval=GregorianCalendar.YEAR;
            else if (interval.equals("M"))
                intInterval=GregorianCalendar.MONTH;
            else if (interval.equals("D"))
                intInterval=GregorianCalendar.DAY_OF_YEAR;
            else if (interval.equals("H"))
                intInterval=GregorianCalendar.HOUR_OF_DAY;
            else if (interval.equals("m"))
                intInterval=GregorianCalendar.MINUTE;
            else if (interval.equals("S"))
                intInterval=GregorianCalendar.SECOND;
            
            GregorianCalendar cal=new GregorianCalendar(y,m-1,d);
             //将构造的y,m,d传给cal对象
            try{
                cal.add(intInterval,number);
                datReturn=cal.getTime();
            }
            catch (Exception ex) {
            }
            return datReturn;
        }

    /**
         * 给定两个日期值,计算它们相距的天数
         */
         
         
     
    public DateTest(int y,int m,int d){
    this.y=y;
    this.m=m;
    this.d=d;
    }

    public static void main(String[] args){
    DateTest dt = new DateTest(2005,1,1);
    System.out.println(dt.IsLegal());
    SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
    System.out.println(format.format(dt.dateAdd(new Date(),"D",5)));
    }

    private static int y;
    private static int m;
    private static int d;
    }