Date d1,d2;
Calendar cal1=new GregorianCalendar();
cal1.setTime(d1);
Calendar cal2=new GregorianCalendar();
cal2.setTime(d2);
int k=cal1.get(Calendar.YEAR)*12+cal1.get(Calendar.MONTH)-cal1.get(Calendar.YEAR)*12-cal1.get(Calendar.MONTH);
//两个时间差多少个月

解决方案 »

  1.   

    打错了:
    int k=cal1.get(Calendar.YEAR)*12+cal1.get(Calendar.MONTH)-cal2.get(Calendar.YEAR)*12-cal2.get(Calendar.MONTH);
      

  2.   

    Calendar calendar = Calendar.getInstance();
            Date d=new Date();
            calendar.setTime(d);
            String theyear=Integer.toString(calendar.get(Calendar.YEAR));
            String themonth=myconvert(Integer.toString(calendar.get(Calendar.MONTH)+1));
            String theday=myconvert(Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)));
            String thehour=myconvert(Integer.toString(calendar.get(Calendar.HOUR_OF_DAY)));
            String theminute=myconvert(Integer.toString(calendar.get(Calendar.MINUTE)));
            String thesecond=myconvert(Integer.toString(calendar.get(Calendar.SECOND)));
            String stoday=theyear+themonth+theday+"-"+thehour+theminute+thesecond;
      

  3.   

    Calendar类里面什么都有,你看看api,建议不要使用date类
      

  4.   

    下面转一篇:
    来源:http://search.csdn.net/Expert/topic/2492/2492629.xml?temp=.3503229我丢人啊,我不活啦。这么EASY的问题居然连贴俩贴都有虫虫。我可是三天学完JAVA,还懂.jar的啊。昨日按SQLSERVER 的 dateDiff() 测试了一下代码,修正了大大小小一堆bug。最终版本如下。当当当当,隆重推出 dateDiff()。/*
     * @(#)DateDiff.java  1.00 11/26/2003
     *
     */
    import java.util.Calendar;
    /**
      * 
      *
      * Copyright 2003 Wobelisk. All rights reserved.
      * Free Use. No response for damage caused by errors of this file.  
      * <p>
      * dateDiff() function similar to ms sqlserver. Calculate difference between two
      * Calendars. Difference can be represented by day,week,hour,minute and second.
      * 
      * <p>
      * The difference between "2003-11-22 23:59:59" and "2003-11-23 00:00:00" is
      * 1 day, or 1 week, or 1 hour, or 1 minute or 1 second
      * <p>
      * Default week difference is based on the rule that Sunday as the first day of
      * the week. In France or China where Monday is the first day of week, you
      * should set the first day of week to Monday before calculation. For Example,
      * <pre>
      * Calendar c1=Calendar.getInstance();
      * Calendar c2=Calendar.getInstance();
      * c1.set(2003,10,23,23,0,0); //Sunday 2003-11-23 23:00:00
      * c2.set(2003,10,24,1,0,0);  //Monday 2003-11-24 01:00:00
      * dateDiff("week",c1,c2);    //week difference between c1 and c2 is 0 week
      * c1.setFirstDayOfWeek(Calendar.MONDAY);
      * c2.setFirstDayOfWeek(Calendar.MONDAY);
      * dateDiff("week",c1,c2);    //week difference between c1 and c2 is 1 week
      * </pre>
      *
      * setFirstDayOfWeek() only affects week difference
      *
      * @author [email protected]
      * @version 1.00 11/26/2003
      *
      */ 
      public class DateDiff{
          /**
       * Calculate Calendar c2 - Calendar c1
       * @param s the String represents type of difference: day, week, hour, 
       * minute, second. String is case-insensitive
       * @param c1 the Calendar instance
       * @param c2 the Calendar instance
       */    public static long dateDiff(String s,Calendar c1, Calendar c2){
         String s1=s.toUpperCase();
         if(s1.equals("DAY")){
            Calendar c11=Calendar.getInstance();
            Calendar c21=Calendar.getInstance();
            c11.set(c1.get(Calendar.YEAR),c1.get(Calendar.MONTH),c1.get(Calendar.DAY_OF_MONTH),0,0,0); 
            c21.set(c2.get(Calendar.YEAR),c2.get(Calendar.MONTH),c2.get(Calendar.DAY_OF_MONTH),0,0,0); 
            return (c21.getTimeInMillis()-c11.getTimeInMillis())/(1000*24*3600);  
       } else if(s1.equals("WEEK")){
            long base=dateDiff("DAY",c1,c2);
            int dw1=c1.get(Calendar.DAY_OF_WEEK);
            int dw2=c2.get(Calendar.DAY_OF_WEEK);

            if(c1.getFirstDayOfWeek()==Calendar.MONDAY && dw1==Calendar.SUNDAY)
       dw1+=7;
            if(c2.getFirstDayOfWeek()==Calendar.MONDAY && dw2==Calendar.SUNDAY)
       dw2+=7;
    if(base>0 && dw2<dw1)
       return base/7+1;
    else if(base<0 && dw2>dw1)
      return base/7-1;
    else 
      return base/7;
        } else if(s1.equals("HOUR")){
    return dateDiff("DAY",c1,c2)*24+c2.get(Calendar.HOUR_OF_DAY)-c1.get(Calendar.HOUR_OF_DAY);
       } else if(s1.equals("MINUTE")){
    return dateDiff("HOUR",c1,c2)*60+c2.get(Calendar.MINUTE)-c1.get (Calendar.MINUTE);
      } else if(s1.equals("SECOND")){
    return dateDiff("MINUTE",c1,c2)*60+c2.get(Calendar.SECOND)-c1.get(Calendar.SECOND);
      } else
    return Long.MIN_VALUE; //error
     }
    }
      

  5.   

    TO:
    flyxxxxx(灭神) ( ) 
    我觉得你的方法不正确!你没有考虑过"2004-1-2" 和"2005-1-1"实际上只有11个月,而不是12个月,你明白我的意思没有!!!
    大家再好好想想!!
      

  6.   

    java.text.SimpleDateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd");
    java.util.Date d1 = df.parse("2004-1-2");
    java.util.Date d2 = df.parse("2005-1-1");java.util.GregorianCalendar cal1=new java.util.GregorianCalendar();
    cal1.setTime(d1);
    java.util.GregorianCalendar cal2=new java.util.GregorianCalendar();
    cal2.setTime(d2);
    int k=(cal2.get(java.util.Calendar.YEAR)-cal1.get(java.util.Calendar.YEAR))*12+cal2.get(java.util.Calendar.MONTH)-cal1.get(java.util.Calendar.MONTH);
    int mod = cal2.get(java.util.Calendar.DATE)-cal1.get(java.util.Calendar.DATE);
    k+=(mod>0?1:(mod<0?-1:0));
    System.out.println(k);
      

  7.   

    楼上,还是不对!
    java.util.Date d1 = df.parse("2004-1-2");
    java.util.Date d2 = df.parse("2005-1-4");
    试试看,就知道了!!!请问,是不是我太专牛角了!好象如果要考虑天的话,很难算出来是不是各位?!!
      

  8.   

    java.text.SimpleDateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd");
    java.util.Date d1 = df.parse("2004-1-2");
    java.util.Date d2 = df.parse("2005-1-1");java.util.GregorianCalendar cal1=new java.util.GregorianCalendar();
    cal1.setTime(d1);
    java.util.GregorianCalendar cal2=new java.util.GregorianCalendar();
    cal2.setTime(d2);
    int k=(cal2.get(java.util.Calendar.YEAR)-cal1.get(java.util.Calendar.YEAR))*12+cal2.get(java.util.Calendar.MONTH)-cal1.get(java.util.Calendar.MONTH);
    int mod = cal2.get(java.util.Calendar.DATE)-cal1.get(java.util.Calendar.DATE);
    k+=(mod>=0?0:-1);
    System.out.println(k);