私はこれを約1時間試してきましたが、正しく動作していないようです。Android:日付欄の時間帯を変更
私は基本的にデータベースから日付文字列を読み込みます。yyyy-MM-dd HH:mm:ssという形式です(2012-03-01 14:32:00)。
私が持っているのは文字列です。タイムゾーン情報はありません。この時間は私たちのサーバー上で作成され、最終的にデバイスデータベースに入ります。私はそれが東部標準時であることを知っています。
だから私は基本的に次のコードを試してみました:
SimpleDateFormat sourceFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sourceFormat.setTimeZone(TimeZone.getTimeZone("EST"));
Date parsed = sourceFormat.parse("2012-03-01 10:18:14");
TimeZone tz = TimeZone.getDefault();
SimpleDateFormat destFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
destFormat.setTimeZone(tz);
String result = destFormat.format(parsed);
Log.v("TZ", result);
を私のエミュレータでは、私は時間を記録するときので、それが正しいとされ、2012年3月1日10時18分14秒を示したESTです。
sourceFormatのタイムゾーンをAmerica/Los Angelesと変更すると、2012-03-01 05:18:14の出力が得られます。
私は専門家ではありませんが、私はロサンゼルスがモントリオール(オフィスがあるEST)の3時間遅れていると確信しています。だから私は時間がかかる場合2012-03-01 10:18:14とそれをアメリカ/ロサンゼルスの時間と呼んで、それをESTに変換して、私は見たいと思う2012-03-01 13:18:14。
何が起こっているか
ご協力いただければ幸いです。
ありがとうございます。
実際のデバイスでテストできますか?ときどきエミュレータは破滅した。 – yorkw
はい私はデバイスでテストすることができます、私は明日に入るとすぐに試してみます。エミュレータは常に本物のように動作するとは限りませんが、デスクトップ上にあるように現在の時刻が表示されることを理解しています。 – PaulG