私は私のデバッグビューに以下のコードで何が起こっているかを把握することはできません。ミリ秒単位で時間を追加すると、間違った結果が表示されるのはなぜですか?
public void addTime(int day, long offsetMillis) {
long currentTime = mCalendar.getTimeInMillis();
long newTime = currentTime + offsetMillis;
Date offsetDate = new Date(offsetMillis);
Date currentDate = new Date(currentTime);
Date newDate = new Date(newTime);
// ...
}
私は現在の時刻に追加する必要がミリ秒単位の時間を持っています。デバッグ状態を見ると、offsetDateが23:46に変換されていることが分かります。これは、追加したい時間が正しいことです。
currentDateは、現在の時刻です。これは、曜日00:00の開始時刻です。
newDateは現在の時刻にオフセットを加えたもので、13:46に変換されます。
これは間違いですが、ここではGMTの違いがありますが、ご覧のとおり、デバッグビューではGMTはすべて+10です。だから、私の人生は、Javaがやっていることを理解できません。どうすればこの問題を解決できますか?ミリ秒単位で時間を指定すると、指定した日付にどのように追加するのですか?
「Date」ではなく「java.time」クラスを使用するのが理想的です。 –