例如:String data1 = "20090909";
String data2 = "20100101";data2 - data1  求出相差的月份

解决方案 »

  1.   

    Long.parseLong("20100101")-Long.parseLong("20090909")
      

  2.   

    送你个例子吧/**
     * 求月数差
     * 
     * @param strDate1    日期1    yyyy/MM/dd
     * @param strDate2    日期2    yyyy/MM/dd
     * @return 月数差
     * @throws ParseException 日期格式错误
     */
    public static int differenceMonth(String strDate1, String strDate2) 
        throws ParseException {
        Date date1 = DateFormat.getDateInstance().parse(strDate1);
        Date date2 = DateFormat.getDateInstance().parse(strDate2);
        return differenceMonth(date1,date2);
    }public static int differenceMonth(Date date1, Date date2) {
        Calendar cal1 = Calendar.getInstance();
        cal1.setTime(date1);
        cal1.set(Calendar.DATE, 1);
        Calendar cal2 = Calendar.getInstance(); 
        cal2.setTime(date2);
        cal2.set(Calendar.DATE, 1);
        int count = 0;
        if (cal1.before(cal2)) {
            while (cal1.before(cal2)) {
                cal1.add(Calendar.MONTH, 1);
                count--;
            }
        } else {
            count--;
            while (!cal1.before(cal2)) {
                cal1.add(Calendar.MONTH, -1);
                count++;
            }
        }
        return count;
    }
      

  3.   

    下面的东西 希望对你有帮助
    java.text.SimpleDateFormat   timeformat   =   new   SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  String times1="2008-11-15 00:00:00";
    Date dates=timeformat.parse(times1);
    String times2="2008-11-22 00:00:00";

    Date dates2=timeformat.parse(times2);
    System.out.println(times2+"       "+dates2.getTime());



    long adf=dates2.getTime()-dates.getTime(); System.out.println(adf);
    System.out.println(adf/604800000);
      

  4.   

    这不是很难吧,直接写就能写出来
    SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
    Date firstDate = firstDate = df.parse(data1);
    Date secondDate = secondDate = df.parse(data2);
    return secondDate.getMonth()-firstDate.getMonth()+12*(secondDate.getYear()-firstDate.getYear());我没处理异常啊。
      

  5.   

    我记得好久前做过。转换为 getTime()相减。
      

  6.   

    使用 joda-timeimport org.joda.time.*;
    import org.joda.time.format.*;DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMdd");DateTime d1 = formatter.parseDateTime("20090909");
    DateTime d2 = formatter.parseDateTime("20100101");Period p = new Period(d1,d2,PeriodType.months());PeriodFormat.getDefault().print(p); // 3 months
      

  7.   

    额,楼上都是高人啊,我对java类库了解不够深入,我只想到将String转化为整型数据进行运算,下面是代码:
    public class test{
    int year,month;
    String str1="20050909";
    String str2="20100201";
    public int seperateYear(String str){
    return Integer.parseInt(str.substring(0,4));   //获取年份
    }
    public int seperateMonth(String str){
    return Integer.parseInt(str.substring(4,str.length()-2));//获取月份
    }
    public static void main(String args[]){
     test t=new test();
     int yearSub=t.seperateYear(t.str1)-t.seperateYear(t.str2);  //年份之差
     int monthSub=t.seperateMonth(t.str1)-t.seperateMonth(t.str2);//月份之差
     if(yearSub>=0&&monthSub>=0)
     System.out.println("两日期相差:"+yearSub+"年"+monthSub+"月");
     if(yearSub<0&&monthSub>0)
     System.out.println("两日期相差:"+(Math.abs(yearSub)-1)+"年"+(12-monthSub)+"月");
     if(yearSub>=0&&monthSub<0)
     System.out.println("两日期相差:"+(yearSub-1)+"年"+(12+monthSub)+"月");
     if(yearSub<0&&monthSub<=0)
     System.out.println("两日期相差:"+(Math.abs(yearSub))+"年"+(Math.abs(monthSub))+"月");
      }
    }