Java .get(Calendar.YEAR)返回当前年份而不是自我指定的值

时间:2012-02-07 12:22:55

标签: java

我正在开发一个Java项目,我对这个遇到的问题感到困惑。 我在我的项目中使用GregorianCalendar。

Member m = new OldMember(count++, "Lawrence", "98765432", new GregorianCalendar(1990,02,16));

OldMember om = (OldMember)m;

我手动分配了上述特定成员的出生日期。

Calendar dob = om.getDob(); 

之后我从om课程中检索了成员出生日期,并将其分配给上述的dob日历。

String DOB = dob.get(Calendar.DATE) + "/" + dob.get(Calendar.MONTH) + "/" + dob.get(Calendar.YEAR);

之后,我将结果传递给我创建的字符串DOB。

System.out.println("DOB: " + DOB);

结束结果:

DOB: 7/1/2012 <--- Today's date instead of 16/2/1990 which I wanted.

有人介意帮助我吗? :)

2 个答案:

答案 0 :(得分:2)

public OldMember(int i, String n, String t, Calendar c) {
   super(i,n,t); 
   dob = dob;
} 

public Calendar getDob() { return dob; } ?

(评论代码)

你正在传递Calendar c但是在构造函数中有dob = dob(assig to self),至少你缺少这个关键字

答案 1 :(得分:0)

我不认为你的代码正在做你认为它正在做的事情。查看实际操作的最佳方法是使用调试器逐步执行代码。

此代码的行为符合预期。

final GregorianCalendar dob = new GregorianCalendar(1990, Calendar.MARCH, 16);
String DOB = dob.get(Calendar.DATE) + "/" + (dob.get(Calendar.MONTH) + 1) + '/' + dob.get(Calendar.YEAR);
System.out.println("DOB=" + DOB);

SimpleDateFormat DDMMYYYY = new SimpleDateFormat("dd/MM/yyyy");
String DOB2 = DDMMYYYY.format(dob.getTime());
System.out.println("DOB2=" + DOB2);

打印

DOB=16/3/1990
DOB2=16/03/1990