import java.util.*;
import java.text.*;public class World {
   public static void main(String[] args) {
      GregorianCalendar worldTour = new GregorianCalendar(1872, Calendar.OCTOBER, 2);
      worldTour.add(GregorianCalendar.DATE, 80);
      Date d = worldTour.getTime();
      DateFormat df = DateFormat.getDateInstance();
      String s = df.format(d);
      System.out.println("80 day trip will end " + s);
   }
}

解决方案 »

  1.   

    Calendar 是一个抽象的类,他定义了需要多时间的操作方法,而GregorianCalendar继承了Calendar类,同时也增加了许多自己的方法,楼主可以看看这两个类的jdk帮助,以后遇到问题就可以不求人了。
      

  2.   

    不行啊,我 Date d = rst.getDate("date");
    GregorianCalendar worldTour = new GregorianCalendar(d);
    报错啊。
    我得出来的d是2005/01/01这种格式的啊,GregorianCalendar(1872, Calendar.OCTOBER, 2)这咋回事;
      

  3.   

    public static Date changeDay(Date d, int offset){
      Calendar calendar = Calendar.getInstance();
      calendar.setTime(d);
      calendar.set(Calendar.DAY_OF_YEAR,(calendar.get(Calendar.DAY_OF_YEAR) + offset));
      return calendar.getTime();
    }
      

  4.   

    如果是2005/01/01这样格式,先转换;
    //import java.text.*;
    //import java.util.*;public static String addDate(String day,int x)
      {
        SimpleDateFormat format=new SimpleDateFormat("yyyy/MM/dd");
        Date date = null;
        try
        {
          date = format.parse(day);
        }
        catch (ParseException ex)
        {
          ex.printStackTrace();
        }
        if (date==null) return "";
        Calendar cal=Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.DAY_OF_MONTH,x);
        date=cal.getTime();
        System.out.println("3 days after(or before) is "+format.format(date));
        cal=null;
        return format.format(date);
      }
      

  5.   

    我现在从数据库得出来日期 Date dd= rs.getDate("date");是这种类型2005-01-01
    我就想把日期dd+天数,变为2005-01-02.......返回2005-01-02给我。
    Calendar的add函数:当天数到了最后一天再加一天,月份回自动增加1吗,要自己判断吗?
    干嘛好是用getInstance啊,干嘛老是用当天啊,我想2005-10-01增加一天,变为2005-10-02,
    我要怎么样赋2005-01-01给Calendar啊。。
      

  6.   

    wallex(兰舟催发) 不是写好了吗?你这样用就行了:
    addDate("2005/02/27",3)cal.setTime(date);就是将时间设为你传的值啊
    如果是数据库里的:你把接口改下就行了, 当天数到了最后一天再加一天,月份回自动增加1吗,要自己判断吗?这个不用你担心就算年底后加一天成新的一年也不用你管的
      

  7.   

    给你写好的method都不试!!!!!!!!!!!!!!!!!!!!!!无话可说!!!!!!!
      

  8.   

    rower203华仔大哥:不好意思;
    你的method我试过了,怎么这乜慢啊,半天还没出结果啊。。
      

  9.   

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;public class Yesterday {
    public static Date getYesterday(){
      Calendar calendar = Calendar.getInstance();
      calendar.set(Calendar.DAY_OF_YEAR,(calendar.get(Calendar.DAY_OF_YEAR)-1));
      return calendar.getTime();
    }

    public static Date changeDay(Date date, int offset){
      Calendar calendar = Calendar.getInstance();
      calendar.setTime(date);
      calendar.set(Calendar.DAY_OF_YEAR,(calendar.get(Calendar.DAY_OF_YEAR) + offset));
      return calendar.getTime();
    }  public static void main(String[] args){ String nyr = "2005-8-19";
    SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
    try {
    Date d = fmt.parse(nyr);
    System.out.println(fmt.format(changeDay(d, +1)));
    System.out.println(fmt.format(changeDay(d, +250)));
    System.out.println(fmt.format(changeDay(d, -250)));
    } catch (ParseException e) {
    e.printStackTrace();
    }
      } 
    }
      

  10.   

    大老:怎么2005-08-31后,增加一天后calendar.set(Calendar.DAY_OF_YEAR,(calendar.get(Calendar.DAY_OF_YEAR) + 1));出来的结果是2005-08-01啊,怎么不是2005-09-01啊???
      

  11.   

    rower203(华仔)提供的Yesterday 类中changeDay方法是可以用的,请楼上的兄弟把rower203(华仔)的源码拷贝一下,再重新编译运行一下,我的输出结果是:
    2005-08-20
    2006-04-26
    2004-12-12
    当把String nyr = "2005-8-19";改为String nyr = "2005-8-31";后输出结果为:
    2005-09-01
    2006-05-08
    2004-12-24
    结果是正确的,请再试一下
      

  12.   

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
    tx_dt = sdf.parse("2005-10-31");
    Calendar strDate = Calendar.getInstance();
    strDate.setTime(tx_dt);
    calendar.set(Calendar.DAY_OF_YEAR,(calendar.get(Calendar.DAY_OF_YEAR) + 1));
    out.print(format.format(strDate.getTime()));结果:2005-10-01
      

  13.   

    如果tx_dt = sdf.parse("2005-10-31");这句话的,换为Date tx_dt = new Date();
    取到当前日期的话,加减天数就正常。为什么tx_dt赋值就不行啊?
      

  14.   

    你写错了:
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
    注意:
     wallex(兰舟催发)写的是:
    SimpleDateFormat format=new SimpleDateFormat("yyyy/MM/dd");日期时间格式是:
    模板定义如下:
    y        年号,如 1996
    M        月份,如 July 或者 07
    d        月中第几天,如 12
    H        小时(24制),如 0、17
    m        分钟,如 32
    s        钞钟,如55
    S        微钞,如978
    E        星期几,如 Tuesday
    D        一年中的第几天,如 189
    w        week in year            (Number)            27
    W        week in month          (Number)            2
    a        am/pm er            (Text)              PM
    k        hour in day (1~24)      (Number)            24
    K        hour in am/pm (0~11)    (Number)            0
    z        time zone              (Text)              Pacific Standard Time
    '        escape for text        (Delimiter)
    ''      single quote            (Literal)          '