現在は 3/15/11 で、新しい日付オブジェクトを呼び出しているとき:
Date now = new Date();
お返ししてます
- 月を 2 (
getMonth()
)、 - 日として2 (
getDay()
) - 年 (
getYear()
) は 111 です。
この慣習には理由がありますか?
現在は 3/15/11 で、新しい日付オブジェクトを呼び出しているとき:
Date now = new Date();
お返ししてます
getMonth()
)、getDay()
)getYear()
) は 111 です。この慣習には理由がありますか?
クラスのドキュメントから直接:
- 年 y は、整数 y - 1900 で表されます。
- 月は 0 から 11 までの整数で表されます。0 は 1 月、1 は 2 月などです。したがって、11 は 12 月です。
- 日付 (月の日) は、通常の方法で 1 から 31 までの整数で表されます。
そして、に関してはgetDay()
:
この日付が表す曜日を返します。戻り値 (0 = 日曜日、1 = 月曜日、2 = 火曜日、3 = 水曜日、4 = 木曜日、5 = 金曜日、6 = 土曜日) は、この値で表される時点を含む、または開始する曜日を表します。ローカル タイム ゾーンで解釈される日付オブジェクト。
2011 年 3 月 15 日は実際には火曜日です。
この慣習には理由がありますか?
その理由は、Date の javadoc が指定するものだからです。@matt bの回答を参照してください。
API は JDK 1.0のDate
時代に作成されたものであり、多くの分野で問題があることがよく知られています。そのため、ほとんどの Date メソッドが非推奨としてマークされています。(ちなみに、新しいコードでは使用しないことをお勧めします!!)
Calendar
API は で大幅に改善されてDate
いますが、Java で日付/時刻の値を処理するための最も優れた API は、サードパーティのJoda時間API です。
Joda 時間の使用例が必要な場合は、上記のリンクを参照してください。GregorianCalendar
javadocsに Calendar の使用例があります。カレンダーのその他の使用例は、このページにあります。