为什么 Java Date 类的 getYear() 返回错误值?

And*_*ili -3 java date

我正在开发一个 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());
Run Code Online (Sandbox Code Playgroud)

输出是:

datePrimoVersamento: Fri Nov 27 00:00:00 CET 2015 year: 115
dateMovimentoFinale: Mon Oct 31 00:00:00 CET 2016 year: 116
Run Code Online (Sandbox Code Playgroud)

如您所见,这两个日期的年份是20152016,getYear()方法返回给我115116

为什么?这怎么可能?我该如何解决这个问题?

Bru*_* DM 7

来自 Javadoc:

已弃用。从 JDK version 1.1 开始,由 Calendar.get(Calendar.YEAR) - 1900 替换。返回一个值,该值是从包含此 Date 对象表示的时间或以该日期对象表示的时间开始的年份减去 1900 的结果,如解释当地时区。

所以: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));
Run Code Online (Sandbox Code Playgroud)