0

可能重复:
为什么 Java 的 Date.getYear() 返回 111 而不是 2011?

我试图从日期对象中获取年、月和日,但以下内容给了我一些完全随机的东西:

    Date d = new Date();
    System.out.println(d.getYear() + " - " + d.getMonth() + " - " + d.getDay());

我得到:112 - 9 - 1

有谁知道为什么?你有更好的方法吗?对于我的程序,我需要 Date 对象。

4

3 回答 3

9

阅读这三种方法的javadoc(不推荐使用,因此不应该使用,顺便说一句)会告诉你为什么:

  • 112:自 1900 年以来的年数
  • 9:月份数,从 0 开始(所以 9 表示 10 月)
  • 1:月份中的某天

使用 Calendar 获取日期字段,并使用 DateFormat 格式化日期。

于 2012-10-22T21:58:26.007 回答
1

是的...文档知道

具体来说,getYear返回的年份是当前公历年减去 1900。

此外,这些吸气剂已被弃用。您应该使用Calendar类。

如果您必须使用 Date 对象,请使用Calendar.getInstance().setTime(dateObject)

于 2012-10-22T21:57:46.897 回答
1

源代码解释了原因。

@Deprecated
public int getYear() {
    return normalize().getYear() - 1900;
}
@Deprecated
public int getMonth() {
return normalize().getMonth() - 1; // adjust 1-based to 0-based
}

@Deprecated
public int getDay() {
return normalize().getDayOfWeek() - gcal.SUNDAY;
}
于 2012-10-22T22:04:24.537 回答