public static Date dateminius(Date datebeforesix){   Calendar date = Calendar.getInstance();
   Calendar dateafter = Calendar.getInstance();
   date.setTime(datebeforesix);
    
   dateafter.set(Calendar.YEAR,date.get(Calendar.YEAR));
   dateafter.set(Calendar.MONTH,date.get(Calendar.YEAR) -6)
   dateafter.set(Calendar.DATE,poiss.get(Calendar.DATE))
   
   Date dateaftersixmonth = dateafter.getTime();   return dateaftersixmonth;}

解决方案 »

  1.   

    GregorianCalendar g = new GregorianCalendar(2004,8,31);
          g.add(java.util.Calendar.MONTH,-6);
          System.out.println(g.get(Calendar.MONTH));
          System.out.println(g.get(Calendar.DATE));
          得到的是3, 1号吧
      

  2.   

    错了  应该是这样 
         应为java里的月份是要减1的
          GregorianCalendar g = new GregorianCalendar(2004,7,31);
          g.add(java.util.Calendar.MONTH,-6);
          System.out.println(g.get(Calendar.MONTH));
          System.out.println(g.get(Calendar.DATE));
      

  3.   

    DateFormat dateFormat =
            DateFormat.getDateInstance(DateFormat.MEDIUM);
            GregorianCalendar grc=new GregorianCalendar(2004, Calendar.AUGUST,31);
            grc.add(GregorianCalendar.MONTH,-6);
            System.out.println("grc="+dateFormat.format(grc.getTime())); 得出的结果是2/29,8月的个月前应该是2/29没错吧...
      

  4.   

    catblue(limiaomiao) :我错了,你的solution是对的。谢谢。