私のAndroidアプリケーションは、サーバーからいくつかのjsonデータをフェッチしています。jsonファイルには、PHPで次のように計算される現在の日付を表すタイムスタンプ値が含まれています。
mktime(0,0,0,date('m'),date('d'),date('Y'))
つまり、私は00:00時間にUNIXタイムスタンプを取得し、それを使用して特定の日を表します。
これで、Android側でファイルが解析され、ファイルのタイムスタンプが次のように計算されるJavaのタイムスタンプと比較されます。
GregorianCalendar aDate = new GregorianCalendar();
GregorianCalendar tDate = new
GregorianCalendar(aDate.get(Calendar.YEAR),aDate.get(Calendar.MONTH),
aDate.get(Calendar.DAY_OF_MONTH));
today = (tDate.getTimeInMillis())/1000;
明らかなように、私はPHPで行ったのと同じ方法でJavaでタイムスタンプを計算しようとしています。しかし、奇妙なことに、Javaは現在の時刻も考慮に入れています。たとえば、Androidエミュレーターでは、タイムゾーンが異なり(現地時間より1時間遅れています)、PHPで計算されたものとは3600秒異なるタイムスタンプの値を取得しています。Androidでタイムゾーンを変更した場合エミュレータ、問題ありませんでした。これはJavaのバグですか?