已经在页面取得一个日期格式为:31-07-1990,要与当前的日期做对比,得出够不够多少年,如果今天是:01-08-2009,这样说来只有18年没有到19年,得出结果应该是整数的18,应该怎么写啊 

解决方案 »

  1.   

    你可以先把这2个值转换为Date格式
    在Date中有一个方法getTIme();
    返回值为lang,其实就是这个时间对应的毫秒数
    long l=D1.getTime()-D2.getTIme();
    int year=l/60*60*24*365;
    这个year的整数值基本上就是你想要的
    不过这是一个过时的方法,可能还有更好的
      

  2.   

      String a="31-07-1990",b="01-08-2009"; 
    SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy"); 
    try { 
    Date d1 = sdf.parse(a); 
    Date d2 = sdf.parse(b); 
    long day = (d2.getTime() - d1.getTime()) /(365*24*60*60*1000); 
    System.out.println(day); 
    } catch (ParseException e) { 
    e.printStackTrace(); 
    }
      

  3.   

    网上很多,根据你的需要稍微修改了修改。import java.text.DateFormat;   
    import java.text.SimpleDateFormat;   
    import java.util.Calendar;   
    import java.util.Date;   /**   
     * @description 日期比较天 月 年    
     */  public class DateTest {       public static void main(String[] args) {   
            String date = "1990-07-31";     
            DateTest.compareDate(date, "2009-08-01", 0);   
            DateTest.compareDate(date, "2009-08-01", 1);   
            DateTest.compareDate(date, "2009-08-01", 2);  
        }   
           
        /**   
         * @param stype 返回值类型   0为多少天,1为多少个月,2为多少年   
         * @return   
         */  
        public static int compareDate(String date1,String date2,int stype){   
            int n = 0;   
               
            String[] u = {"天","月","年"};   
            String formatStyle ="yyyy-MM-dd";   
            DateFormat df = new SimpleDateFormat(formatStyle);   
            Calendar c1 = Calendar.getInstance();   
            Calendar c2 = Calendar.getInstance();   
            try {   
                c1.setTime(df.parse(date1));   
                c2.setTime(df.parse(date2));   
            } catch (Exception e3) {   
                System.out.println("wrong occured");   
            }   
            while (!c1.after(c2)) {       
                n++;   
                if(stype==1){   
                    c1.add(Calendar.MONTH, 1);// 比较月份,月份+1   
                }   
                else{   
                    c1.add(Calendar.DATE, 1); // 比较天数,日期+1   
                }   
            }   
               
            n = n-1;   
               
            if(stype==2){  
             int yushu=(int)n%365;  
                n =  yushu==0?(n/365):((n/365)-1);
            }      
               
            System.out.println(date1+" -- "+date2+" 相差多少"+u[stype]+":"+n);         
            return n;   
        }   
           
        /**   
         * 得到当前日期   
         * @return   
         */  
        public static String getCurrentDate() {   
            Calendar c = Calendar.getInstance();   
            Date date = c.getTime();   
            SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd");   
            return simple.format(date);       }   
    } 运行结果:
    1990-07-31 -- 2009-08-01 相差多少天:6941
    1990-07-31 -- 2009-08-01 相差多少月:228
    1990-07-31 -- 2009-08-01 相差多少年:18
      

  4.   

     GregorianCalendar cl = new GregorianCalendar();
          cl.setTime(dDate);//日期
          return cl.get(field);//天数
      

  5.   


    以系统当前日期为起始日期,计算离目标日期还差几天
    public String getDateDiff(String targettime) throws ParseException {      
        // 得到系统当前的日期     
        String today = DateFormat.getDateInstance().format(new Date());      
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");      
        // 将目标日期设置为毫秒形式     
        long to = df.parse(targettime).getTime();      
        // 将起始日期设置为毫秒形式     
        long from = df.parse(today).getTime();      
        // 得到相减后的毫秒,除于1000得到秒,除于60得到分钟,再除于60得到小时,除于24得到天数     
        return to > from ? String.valueOf((to - from) / (1000 * 60 * 60 * 24)) : String      
            .valueOf((from - to) / (1000 * 60 * 60 * 24));      
        }     
    用户给定起始日期,计算离目标日期还差几天
    public String getDateDiff(String targettime, String begintime) throws ParseException {      
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");      
        // 将目标日期设置为毫秒形式     
        long to = df.parse(targettime).getTime();      
        // 将起始日期设置为毫秒形式     
        long from = df.parse(begintime).getTime();      
        // 得到相减后的毫秒,除于1000得到秒,除于60得到分钟,再除于60得到小时,除于24得到天数     
        return to > from ? String.valueOf((to - from) / (1000 * 60 * 60 * 24)) : String      
            .valueOf((from - to) / (1000 * 60 * 60 * 24));      
        }     
      
      

  6.   

    根据你现在的需求其实还是比较简单的:但是代码比较麻烦        public static int getYears()
    {
    String dateSource = "31-07-1990";
    String dateDest = "01-08-2009";
    String[] partSource = dateSource.split("-");
    String[] partDest = dateDest.split("-");

    int years = Integer.parseInt(partDest[2]) - Integer.parseInt(partSource[2]);
    int months = Integer.parseInt(partDest[0]) - Integer.parseInt(partSource[0]);
    int days = Integer.parseInt(partDest[1]) - Integer.parseInt(partSource[1]);

    if(months > 0)
    {
    return years -1;
    } else if(months < 0)
    {
    return years;
    } else if(months == 0 && days == 0)
    {
    return years;
    } else if(months == 0 && days < 0)
    {
    return years;
    } else 
    {
    return years - 1; 
    }
    }
      

  7.   

    修改:
    -----------------------public static int getYears()
    {
    String dateSource = "31-07-1990";
    String dateDest = "01-07-2009";
    String[] partSource = dateSource.split("-");
    String[] partDest = dateDest.split("-");

    int years = Integer.parseInt(partDest[2]) - Integer.parseInt(partSource[2]);
    int days = Integer.parseInt(partDest[0]) - Integer.parseInt(partSource[0]);
    int months = Integer.parseInt(partDest[1]) - Integer.parseInt(partSource[1]);

    System.out.println(months);
    System.out.println(days);

    if(months > 0)
    {
    return years -1;
    } else if(months < 0)
    {
    return years;
    } else if(months == 0 && days == 0)
    {
    return years;
    } else if(months == 0 && days < 0)
    {
    return years - 1;
    } else 
    {
    return years; 
    }
    }
      

  8.   


    用这个数据
            String bod = "1983-08-03";     
            DateTest.compareDate(bod, "2009-08-01", 0);   
            DateTest.compareDate(bod, "2009-08-01", 1);   
            DateTest.compareDate(bod, "1984-08-03", 2); 这个得出的结果是1983-08-03 -- 2009-08-01 相差多少天:9495
    1983-08-03 -- 2009-08-01 相差多少月:311
    1983-08-03 -- 1984-08-04 相差多少年:0
      

  9.   

    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    Calendar c=Calendar.getInstance();
    try{
    Date dt1=sdf.parse("1990-07-31");
    Date dt2=sdf.parse("2009-08-01");

    c.setTime(dt1);
    int  y1=c.get(Calendar.YEAR);
    int  d1=c.get(Calendar.DAY_OF_YEAR);

    c.setTime(dt2);
    int  y2=c.get(Calendar.YEAR);
    int  d2=c.get(Calendar.DAY_OF_YEAR);

    int  ydiff=(y2-y1>1?y2-y1-1:0)
     +(d2>=d1?1:0);

    System.out.println(ydiff);

    }catch(Exception ex){
    ex.printStackTrace();
    }
      

  10.   

    Date begdt = 1990-07-31;
    Date enddt = 2009-08-01;
    int byear = begdt.getYear();
    int eyear = enddt.getYear();
    enddt.setYear(byear);
    int result_year=eyear-byear-(enddt<begdt?1:0);
      

  11.   

    3楼的是别人发的需要改错的帖子,昨天刚发的修改后的了    public static void main(String[] args) {  
            String date = "1990-07-31";    
            compareDate(date, "2009-07-30", 0);  
            compareDate(date, "2009-07-30", 1);  
            compareDate(date, "2009-07-30", 2);  
        }  
          
        /**  
        * @param stype 返回值类型  0为多少天,1为多少个月,2为多少年  
        * @return  
        */  
        public static int compareDate(String date1,String date2,int stype){  
            int n = 0;  
              
            String[] u = {"天","月","年"};  
            String formatStyle ="yyyy-MM-dd";  
            DateFormat df = new SimpleDateFormat(formatStyle);  
            Calendar c1 = Calendar.getInstance();  
            Calendar c2 = Calendar.getInstance();  
            try {  
                c1.setTime(df.parse(date1));  
                c2.setTime(df.parse(date2));  
            } catch (Exception e3) {  
                System.out.println("wrong occured");  
            }  
            while (!c1.after(c2)) {      
                n++;  
                if(stype==1){  
                    c1.add(Calendar.MONTH, 1);// 比较月份,月份+1  
                }  
                else if (stype==0){  
                    c1.add(Calendar.DATE, 1); // 比较天数,日期+1  
                }  
                else if(stype==2){
                 c1.add(Calendar.YEAR, 1);
                }
            }  
            
            n = n-1;       
              
            System.out.println(date1+" -- "+date2+" 相差多少"+u[stype]+":"+n);        
            return n;  
        }  
          
      

  12.   

    提供另外一种思路,直接操作sql进行比对