6

インスタンス(現在の時刻)を作成してから、Calendar時分と午前/午後を設定しています

Calendar now = Calendar.getInstance();

now.set(Calendar.HOUR,12);
now.set(Calendar.MINUTE,0);
now.set(Calendar.AM_PM,1);

次に、現在の Calendar インスタンスから午前/午後を取得しようとすると、常に午前と現在の 1 日先に誤って設定されます。これは 12 時間でのみ発生し、他の時間では発生しないようです。ここでの問題は何ですか?それらを設定する順序は重要ですか、それとも 12 時間の場合、24 時間形式を使用して「現在」のインスタンスを設定する必要がありますか? はい、言及する必要がありました。これは Android 上にあります。

4

3 に答える 3

18

これは、1日の各半分が0時間から11時間の終わりまで続くためです。数学的に言えば、12時間はありません(実際には常に使用していますが)。つまり、設定するのはPM期間のゼロ時間です。

    now.set(Calendar.HOUR, 0);
    now.set(Calendar.MINUTE,0);
    now.set(Calendar.AM_PM, Calendar.PM);

時間を12に設定することにより、カレンダーにPM期間の12時間に設定するように指示します(正誤を問わず、Oracleエンジニアに依頼する必要があります)。これは、最終的にAM期間の0時間になります。次の日。

半日の期間は12時間しかなく、そのカウントはゼロベースであるため、数学的に言えば、12時間はありません。ゼロです。0:30ではなく12:30と言うのに慣れているので、少し直感的ではありません。

于 2013-01-11T21:14:49.767 に答える
1

私にとってはるかに良い答えは AndroidDev によるものでした

カレンダーで時刻を 24 時間形式に設定する方法 / 彼は Calendar.HOUR_OF_DAY を使用すると言っているので、now.set(Calendar.HOUR_OF_DAY, 0); にする必要があります。

于 2014-07-20T14:13:53.597 に答える