デバッグ ビューで以下のコードで何が起こっているのか理解できません。
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 が何をしているのかを理解することはできません... この問題を解決するのを手伝ってください。ミリ秒単位の時間を指定して、特定の日付に追加するにはどうすればよいですか?
すべての計算は正しいです。指定したミリ秒は、実際には 13 時間 46 分に相当します。タイムゾーンが GMT+10 に設定されているため、offsetDate には 23:46 のみが表示されます。
Unix タイムスタンプは、1970 年 1 月 1 日 00:00 UTC から経過したミリ秒数をカウントすることによって機能します。この日付は、1970 年 1 月 1 日 10:00 UTC+10 に相当します。したがって、offsetDate に表示される時間自体が 10 時間ずれています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加