Java .get(Calendar.YEAR) возвращает текущий год вместо самостоятельно назначенного значения
Я работаю над проектом Java, и я озадачен этой проблемой, с которой я столкнулся. Я использую GregorianCalendar в своем проекте.
Member m = new OldMember(count++, "Lawrence", "98765432", new GregorianCalendar(1990,02,16));
OldMember om = (OldMember)m;
Я вручную назначил дату рождения этого конкретного члена выше.
Calendar dob = om.getDob();
После чего я получил дату рождения члена класса ом и назначил ее каландру доб, как указано выше.
String DOB = dob.get(Calendar.DATE) + "/" + dob.get(Calendar.MONTH) + "/" + dob.get(Calendar.YEAR);
После этого я передаю результаты в созданную мной String DOB.
System.out.println("DOB: " + DOB);
Конечный результат:
DOB: 7/1/2012 <--- Today's date instead of 16/2/1990 which I wanted.
Кто-нибудь может мне помочь?:)
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 (ассигнт для себя), по крайней мере, вам не хватает этого ключевого слова
Я не думаю, что ваш код делает то, что вы думаете, он делает. Лучший способ увидеть, что он на самом деле делает, - пройтись по коду с помощью отладчика.
Этот код ведет себя как ожидалось.
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