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
Другие вопросы по тегам