java.util.Date and getYear()

2022-08-31 13:42:11

我在Java中遇到了以下问题(我看到有些人在JavaScript中遇到了类似的问题,但我使用的是Java)

System.out.println(new Date().getYear());
System.out.println(new GregorianCalendar().getTime().getYear());
System.out.println(this.sale.getSaleDate().getYear());
System.out.println(this.sale.getSaleDate().getMonth());
System.out.println(this.sale.getSaleDate().getDate());

返回

I/System.out( 4274): 112
I/System.out( 4274): 112
I/System.out( 4274): 112
I/System.out( 4274): 1
I/System.out( 4274): 11

我不明白我以为是2012年的112位。这是怎么回事?该类是否不可用?我将其存储为几个类中的字段,以存储日期和时间。我该怎么办?java.util.Date


答案 1

除了所有的评论之外,我想我还可以添加一些关于如何使用java.util.Date,java.util.Calendar和java.util.GregorianCalendar的代码。

//Initialize your Date however you like it.
Date date = new Date();
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
//Add one to month {0 - 11}
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);

答案 2

根据javadocs:

@Deprecated
public int getYear()

已弃用。从 JDK 版本 1.1 开始,替换为 。Calendar.get(Calendar.YEAR) - 1900

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

回报:此日期所代表的年份减去 1900 年。

另请参阅: 日历

所以112是正确的输出。我会遵循Javadoc中的建议或使用JodaTime。