可能重复:
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对象。
答案 0 :(得分:9)
阅读这三种方法的the javadoc(不推荐使用,因此不应该使用,BTW)会告诉你原因:
使用日历获取日期字段,使用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;
}