无法从日期对象i java获取实际日期

时间:2012-10-22 21:55:21

标签: java date

  

可能重复:
  Why does Java’s Date.getYear() return 111 instead of 2011?

我试图让年,月和日形成一个Date对象,但以下内容给了我一些完全随机的东西:

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

我得到:112 - 9 - 1

有谁知道为什么?你有一个更好的apporch?对于我的程序,我需要Date对象。

3 个答案:

答案 0 :(得分:9)

阅读这三种方法的the javadoc(不推荐使用,因此不应该使用,BTW)会告诉你原因:

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

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

答案 1 :(得分:1)

是的...... docs know

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

此外,这些获取者已被弃用。您应该使用Calendar类。

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

答案 2 :(得分: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;
}