次のコードを検討してください。
Time time1 = new Time("America/Los_Angeles"); // UTC -8
Time time2 = new Time("Pacific/Kiritimati"); // UTC +14
time1.setToNow();
time2.setToNow();
Log.d("timetest", "America/Los_Angeles: " + time1.toMillis(false));
Log.d("timetest", "Pacific/Kiritimati : " + time2.toMillis(false));
出力されるログは次のとおりです。
08-03 07:27:50.687: D/timetest(28411): America/Los_Angeles: 1375540070000
08-03 07:27:50.687: D/timetest(28411): Pacific/Kiritimati : 1375540070000
ご覧のとおり、ミリ秒の値は同じですが、タイム ゾーンにより完全に 22 時間ずれています。これにより、の指定されたタイム ゾーンTime.toMillis(boolean)
ではなく、UTC に基づいていると思われます。のタイムゾーンTime
に基づいてミリ秒を取得する方法が必要です。Time
何か案は?