0

サブスクリプションの比較として使用しようとしているコードをいくつか書いたので、このコードは現在の日付をダンプすることになっています。月と日は正しいですが、年は約1900年ほどずれています。理由についてのアイデアはありません。

    Calendar calendar=Calendar.getInstance();
Date validDate = new Date(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
    complain(validDate.toString());

complainは、文字列の値をアラートボックスの画面にダンプするために作成した関数です。

これを示しています3913-02-10

比較を開始する前にこれを修正する必要があるので、速いほど良い

OKいくつかの新しいコードを追加し、廃止された日付を使用しなくなりましたが、今月は1であり、2013110を示しています。

    Calendar cal = Calendar.getInstance();

    int year = cal.get(Calendar.YEAR);
    int month = cal.get(Calendar.MONTH);
    int day = cal.get(Calendar.DAY_OF_MONTH);

    complain(String.valueOf(year) + " " + String.valueOf(month) + " " + String.valueOf(day));

さらに調査した結果、MONTHは正しい値を返すことがわかりましたが、これは非常に直感的ではないと言わざるを得ません。これは、日付形式の通常の理解と一致すると思います。これは、1月が0、2月が1、3月が2などに設定されています。 。直感的ではありません。

ありがとうございます

4

2 に答える 2

6

最初の引数として年 - 1900 を取る非推奨のコンストラクターを使用しています。

于 2013-02-10T23:35:54.237 に答える
0

アプリで最終的に何をするかにもよりますが、これを一粒の塩で考えてください。

年から 1900 を引いて、それをメソッドまたは実行中のものに送信するだけです。

注: これはひどいプログラミング プラクティスであり、これが独学以外の目的である場合は、より良い方法を見つけてください。

于 2013-02-11T00:23:38.743 に答える