要求:两日期相减,如果不满一年,则返回0年,如果不满两年,则返回1年,。
例如:2005-12-10 减 2004-12-10,正好满1年,则返回一年,2005-12-10 减 2004-12-11,一年差一天,则返回0年。请问,用java如何实现,谢谢。

解决方案 »

  1.   

    A1-A2-A3
    B1-B2-B3A1<=A2 || ( (A1-A2=1) && B1<B2 ) || ( (A1-A2=1) && B1=B2 && C1<C2 )
    return 0elseB1>B2 return A1-A2
    B1=B2 return C1>=C2?A1-A2:A1-A2-1没检查,不知道全不全
    年要是按天算,你没考虑2月
      

  2.   

    to  gemouzhi(gemouzhi) 
    我考虑2月了,正因为有闰月,所以不知道如何处理,给出我写的一个算法,因为是365天,所以对闰月的情况不适用,想求一个更好的方法
    private int getYearDiff(Date a, Date b) {
    if ( a==null || b == null)
    return 0;
    cal.setTime(a);
    long aDays = cal.get(Calendar.YEAR) * 365 + cal.get(Calendar.DAY_OF_YEAR);
    cal.setTime(b);
    long bDays = cal.get(Calendar.YEAR) * 365 + cal.get(Calendar.DAY_OF_YEAR);
    return (int) ((aDays - bDays) / 365);
    }
      

  3.   

    我的意思是:如1996年2月29到1997年2月28是一年,我写的是基于string的
    如果你按天,比如1996年2月29到2001年2月27是几年?
      

  4.   

    Calendar c1 = Calendar.getInstance();
    c1.set(年,月,日,0,0);Calendar c2 = Calendar.getInstance();
    c2.set(年,月,日,0,0);long a = c1.getTime().getTime() - c2.getTime().getTime();
    long b = l/(24*60*60*1000*365);我没测试过这个准不准,自己去测吧
      

  5.   

    Calendar c1 = Calendar.getInstance();
    c1.set(年,月,日,0,0);Calendar c2 = Calendar.getInstance();
    c2.set(年,月,日,0,0);long a = c1.getTime().getTime() - c2.getTime().getTime();
    long b = a/(24*60*60*1000*365);我没测试过这个准不准,自己去测吧