0

重複の可能性:
Java の Date.getYear() が 2011 ではなく 111 を返すのはなぜですか?

年、月、日を Date オブジェクトから取得しようとしていますが、次のようにすると完全にランダムな結果が得られます。

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

私は得る: 112 - 9 - 1

誰かが理由を知っていますか?そして、あなたはベットアポーチを持っていますか?私のプログラムでは、Date オブジェクトが必要です。

4

3 に答える 3

9

これら 3 つのメソッドの 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 に答える