0

タイムゾーンA(dBDate)からデータベースから日付を取得しており、タイムゾーンB(deviceNowDate)で現在使用しているAndroidデバイスから現在の日付を取得しています.2つの日付の差をミリ単位で見つける必要があります秒なので、これらの日付の両方を 1 つのハードコードされたタイムゾーン (タイムゾーン C など) に変換してから、違いを見つける必要があると思います。これらの日付の両方を別のタイム ゾーンに変換するにはどうすればよいですか?

これらはカレンダー オブジェクトです。

dbDate.setTimeZone();

これによりタイムゾーンが変更され、日付/時刻も変換されますか?

4

1 に答える 1

2

データベースに保存されている日付は既に UTC になっているため、値をすぐに使用できます。または、別の方法として、Calendarインスタンスを取得し、 を使用してミリ秒単位で時間を設定することもできますsetTimeInMillis(long millis)

デバイスの現在の日付と時刻については、呼び出すと、デバイスのタイム ゾーン、日付、時刻Calendar.getInstance()が返されます。Calendar

getTimeInMillis()、タイム ゾーンに依存しない、エポックからの UTC ミリ秒を返します。

試す

long dbMillis = ... // get date value from DB, in UTC already

Calendar cal = Calendar.getInstance(); // get device's date time with
                                       // default device time zone
long now = cal.getTimeInMillis(); // returns device's date time in UTC

long diff = Math.abs(now - dbMillis);
于 2013-10-30T15:21:48.040 に答える