2016-11-23 2 views
-4

Я работаю над Java-приложением, и у меня есть некоторая проблема с попыткой получить значение года с Дата.Почему класс getYear() Java Date возвращает неправильное значение?

Так в основном у меня следующая ситуация:

В принципе в мой код у меня есть:

Date datePrimoVersamento = sdf.parse(mappaQuote.get(1).getDatariferimentoprezzo()); 
Date dateMovimentoFinale = sdf.parse(mappaQuote.get(0).getDatariferimentoprezzo()); 

System.out.println("datePrimoVersamento: " + datePrimoVersamento + " year: " + datePrimoVersamento.getYear()); 
System.out.println("dateMovimentoFinale: " + " year: " + dateMovimentoFinale.getYear()); 

Выход есть:

datePrimoVersamento: Fri Nov 27 00:00:00 CET 2015 year: 115 
dateMovimentoFinale: Mon Oct 31 00:00:00 CET 2016 year: 116 

Как вы можете видеть, год из 2 даты - a , но getYear() метод возвращается мне и .

Почему? Как это возможно? Как я могу исправить эту проблему?

+5

Почему вы не читали Javadoc из getYear()? Подсказка - он возвращает 'год, представленный этой датой, минус 1900' – Eran

+0

Вы не должны использовать его, потому что он устарел. 'Устаревшие. Начиная с версии JDK версии 1.1, заменяемой Calendar.get (Calendar.YEAR) - 1900.' – Jens

+0

Я думаю, что это уже четвертый раз за две недели, когда я прочитал этот вопрос. – jAC

ответ

4

Из Javadoc:

устар. Начиная с версии JDK версии 1.1, заменяемой Calendar.get (Calendar.YEAR) - 1900. Возвращает значение, которое является результатом вычитания 1900 из года, который содержит или начинается с момента времени, представленного этим объектом Date, как интерпретируется в локальном часовом поясе.

Итак: 2016 - 1900 = 116 и 2015 - 1900 = 115.

Вы должны попробовать это:

Calendar cal = Calendar.getInstance(); 
cal.setTime(datePrimoVersamento); 
System.out.println("datePrimoVersamento's Year: " + cal.get(Calendar.YEAR)); 
cal.setTime(dateMovimentoFinale); 
System.out.println("dateMovimentoFinale's Year: " + cal.get(Calendar.YEAR)); 
1

Вы должны использовать getFullYear(). getYear() просто возвращает количество лет с 1900 года

0

значение года вернулся из getYear() является количество лет прошло с тех пор 1900.

1

По состоянию на JDK версии 1.1, заменен на Calendar.get (Calendar. YEAR) - 1900.

Возвращает значение, которое является результатом вычитания 1900 из года, который содержит или начинается с момента времени, представленного этим объектом Date, как интерпретируется в локальном часовом поясе.

Возвраты: год представлен к этой дате, минус 1900. Пожалуйста, используйте Calender класс

Смежные вопросы