[Java]想计算出设置的日期距今的年数

import java.util.*;
class T1{
private int years;
private Date createDate;
private Date nowDate;

public static void main (String[] args){
    T1 tt = new T1();
      tt.setCreateDate(12-20-2003);
    System.out.println(tt.getYear());
}

public int getYear(){
    Calendar c1 = Calendar.getInstance();
    Calendar c2 = Calendar.getInstance();

    c1.setTime(createDate);
    years = c2.get(Calendar.YEAR) - c1.get(Calendar.YEAR);

    return years;

}

public void setCreateDate(Date createDate){
    this.createDate = createDate;
}

}


好像在格式转换的地方有问题,但是不知道该怎么改
求助!

需要先把字符串转成Date类型,main可以参考如下试下:


import java.text.ParseException;
import java.text.SimpleDateFormat;
上面的包先加上

public static void main(String[] args)  {
        DateTest tt = new DateTest();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        try {
            tt.setCreateDate(format.parse("2003-12-20"));
        } catch (ParseException e) {
            e.printStackTrace();
        }

        System.out.println(tt.getYear());
    }


/**
 * 判断两个时间的相差年数
 * @param date1
 * @param date2
 * @return
 */
public static int getYearDiff(Date date1, Date date2){
    if (date1 == null || date2 == null) {
        return 0;
    }

    Calendar calendar1 = Calendar.getInstance();
    calendar1.setTime(date1);
    int year1 = calendar1.get(Calendar.YEAR);

    Calendar calendar2 = Calendar.getInstance();
    calendar2.setTime(date2);
    int year2 = calendar2.get(Calendar.YEAR);

    return Math.abs( year1 - year2);
}

tt.setCreateDate(12-20-2003);这里是要传入一个Data进去的。
格式确实是有问题,new Date("12-20-2003")这个格式是创建不了date的,
要格式换一下。
https://blog.csdn.net/xzp_12345/article/details/79438006这里有个格式转换的类,可以用一下,main方法里面:

ComDate comDate = new ComDate();
Date date = DateUtil.parseStrToDate("2012-02-12",DateUtil.DATE_FORMAT_YY_MM_DD);
comDate.setCreateDate(date);
return comDate.getYear();

就OK了!