Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Java Date类的getYear()返回错误的值?_Java_Date - Fatal编程技术网

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

为什么Java Date类的getYear()返回错误的值?,java,date,Java,Date,我正在开发一个Java应用程序,在尝试从日期对象获取年份值时遇到了一些问题 因此,基本上我有以下情况: 基本上,在我的代码中,我有: Date datePrimoVersamento = sdf.parse(mappaQuote.get(1).getDatariferimentoprezzo()); Date dateMovimentoFinale = sdf.parse(mappaQuote.get(0).getDatariferimentoprezzo()); System.out.pri

我正在开发一个Java应用程序,在尝试从日期对象获取年份值时遇到了一些问题

因此,基本上我有以下情况:

基本上,在我的代码中,我有:

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
正如您所看到的,这两个日期的年份是2015年和2016年,但是getYear方法返回给我115和116


为什么??怎么可能呢?如何解决此问题?

您应该使用getFullYear。getYear只返回自1900年以来的年数。

从getYear返回的年值是自1900年以来经过的年数。

来自Javadoc:

不赞成。从JDK版本1.1开始,由Calendar.getCalendar.YEAR-1900取代。 返回一个值,该值是从包含该日期对象表示的时间瞬间或以该日期对象表示的时间瞬间开始的年份中减去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));

从JDK版本1.1开始,由Calendar.getCalendar.YEAR-1900取代

返回一个值,该值是从包含该日期对象表示的时间瞬间或以该日期对象表示的时间瞬间开始的年份中减去1900的结果,如在本地时区中解释的那样

返回值:此日期表示的年份,减去1900。
请使用日历类

为什么不阅读getYear的Javadoc?提示-它返回由该日期表示的年份,减去1900。您不应该使用它,因为它已被弃用。不赞成。从JDK版本1.1开始,被Calendar.getCalendar.YEAR-1900取代。我想这是两周内我第四次读到这个问题。发布前搜索堆栈溢出。