我正在开发一个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.
有人介意帮助我吗? :)
答案 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