GPSモジュールとSQLiteデータベースで動作するAndroidアプリがあります。最初はすべてがとても素敵ですが、Date()とタイムゾーンで作業する必要があるときに恐怖があります。Android Date Timezoneでナッツを駆動
少し背景
GPSモジュールは、衛星から日付を取得する可能性があります。これは素晴らしいことであり、私は有効なデータを保証するために私のアプリケーションでそれが必要です。それから返される日付はGMT時間です。 この日付は、StartTimeとしてローカルデータベースのフィールドに挿入されます。 StartTimeはAESで暗号化されて保存されます。私はStartTimeを解読すると、それをDateとして変換し、フォーマットをGMTとして保持する必要があります。
私は はLocationListenerにGPSからデータを取得何:
gpsDate = new Date(location.getTime());
GPS日は、デバイスの現在のタイムゾーンに変換され、デフォルトでは、新しいDate()を持つこと。だから、素敵なの代わりに日曜日05 14:00:00 GMT 2010時間、私は日12月16:00:00 GMT + 2 2010を得る。それはなぜそれをするのですか?私はちょうど新しいDateをgetTime()から外したかったのです。
私は、データベース内のデータを挿入します。SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
outputFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
String myStored = {decrypy from the database}
Date myStartDate = outputFormat.parse(myStoredDate);
myStoredショー:2010-12-05午後02時00分
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
outputFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
String date = outputFormat.format(gpsDate);
私は私がそれを必要とするとき、日付を取得します
myStartDateの表示内容:日曜日12月16:00:00 GMT + 2 2010
ここには何かがありません。私は、GMT形式で日付を取得し、挿入し、変換し、比較し、相違を計算できるようにする必要があります。ユーザーにタイムゾーンを表示する必要があるときだけ、そのタイムゾーンに日付が必要です。
私を照らしてください。
DATEオブジェクトをデータベースに格納する必要があるのはなぜですか。あなたがlocation.getTime()から取得する時間に入れてください。 – Falmarri
これは一種の強みです...私はそれがどのように動作するか試してみます。 – Alin
何かが追加されません、myStartDateはここに日付です。あなたは「ショー」とは何を意味するのか?デバッガで?インシステム。アウト.println?もしあなたが私がGMTとして日付自体を解析したとしても、デフォルトの環境設定はデバイスフォーマットにとどまっていますが、それをあなたの時間フォーマットで表示したいのであれば、別の日付フォーマットを作成し、GMT 。 – codeScriber