時間などを表示するときに9時間ずれて表示される
たとえば、ゲームの経過時間などを画面に表示したりする場合に
Androidの設定によっては9時間ずれて表示されてしまったりする。
final long startDate = Calendar.getInstance().getTimeInMillis(); // 何か処理を書く final long endDate = Calendar.getInstance().getTimeInMillis(); // 開始時間を画面に表示 nowTime.setText(dfm.format(new Date(startDate - endDate)));
このような場合、タイムゾーンを考慮することで、問題を解決できる。
具体的には
// タイムゾーンオフセットを取得 long offset = Calendar.getInstance().get(Calendar.ZONE_OFFSET) + Calendar.getInstance().get(Calendar.DST_OFFSET); final long startDate = Calendar.getInstance().getTimeInMillis(); // 何か処理を書く final long endDate = Calendar.getInstance().getTimeInMillis(); // 開始時間を画面に表示 nowTime.setText(dfm.format(new Date(startDate - endDate - offset)));
とすることで、タイムゾーンの設定のずれを解消することが出来る。