時間などを表示するときに9時間ずれて表示される

2011年1月15日

たとえば、ゲームの経過時間などを画面に表示したりする場合に

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)));

とすることで、タイムゾーンの設定のずれを解消することが出来る。

アンケート