3

私はjava.utilすべての日付とカレンダーの表現に使用しています。しかし、ここで奇妙な問題に直面しています。Calendar.MONTHCalendar.DAY_OF_MONTHなどはすべて間違った出力を出します。しかし、 を使用するCalendar.getTime()と、適切な出力が得られます。何が問題なのですか?

public class TestClass {

    public static void main(String[] args) {
        Calendar rightNow = Calendar.getInstance();
        System.out.println(rightNow.MONTH);
        System.out.println(rightNow.DAY_OF_MONTH);
        System.out.println(rightNow.YEAR);
        System.out.println(rightNow.getTime());
    }
}

そして、同じ出力は次のとおりです。

2
5
1
Tue Jan 22 10:31:44 GMT+05:30 2013
4

4 に答える 4

8
    System.out.println(rightNow.MONTH);
    System.out.println(rightNow.DAY_OF_MONTH);
    System.out.println(rightNow.YEAR);
    System.out.println(rightNow.getTime());

カレンダーの定数値を印刷しています。

値が必要な場合は、行う必要がありますget....

例:

    System.out.println(rightNow.get(Calendar.MONTH));

詳細については、 Calendar javadocを参照してください。

于 2013-01-22T05:06:14.763 に答える
5

Calendar.MONTH は現在の月を返しません。値が 2 の定数です。

ソースから:

public final static int MONTH = 2;

Calendar の get メソッドのパラメータとして使用するためのものです。

public int get(int field) {...}

Calendar の設計は、今日の規則の多くが異なっていたり、存在していなかったり、発展途上だった Java の初期の時代からのものです。Oracle (および以前の Sun) は、現在、java.util.Calendar API のような API を標準 API の一部にすることは決してありません。

そして、完全を期すために、Java の Date および Calendar API の代わりにJoda Timeを使用してください。

于 2013-01-22T05:08:53.207 に答える