3

まず、 を使用できることはわかっていますがCalendar、この問題を理解し、解決する方法を学びたいと考えています。

私はDate現在の日付を持っています。時間、分、秒を 0 に設定したいのですが、次のコードで行います。

        current_date.setHours(0);
        current_date.setMinutes(0);
        current_date.setSeconds(0);

これを行うと、日が 1 減ります。たとえば、今日が 31 の場合、日は 30 に設定されます。

なぜ?どのように解決できますかDate(を使用せずCalendarに、この問題を難しい方法で解決する方法を学びたいです)。ありがとう

4

2 に答える 2

2

推測するだけで...

タイムゾーンの関係だと思います。

HMS を 0 に設定すると、タイム ゾーンに従ってではなく、UTC に従って設定されます (100% 確実ではありませんが...)。したがって、結果の日付は次のとおりではありません。

0:0:0 YOUR LOCAL

しかし

0:0:0 GMT

あなたがアメリカにいるなら、それは前日です。

分を設定してみてください-yourDate.getTimezoneOffset()(うまくいかない場合は正の値で試してください)。

于 2012-07-31T12:49:35.770 に答える
2

これらのメソッドの実装を見てください。彼らはグレゴリオ暦を使用しています。エラーは、その相互作用から発生する可能性があります。

注: JDK 1.1 以降、set メソッドはすべて非推奨です

于 2012-07-31T12:10:42.357 に答える